0
我遇到了一个场景,我需要从同一资源字典中的样式内访问usercontrol资源字典中定义的数据模板。 xaml代码如下所示:访问WPF中同一资源字典中的资源
<UserControl.Resources>
<ResourceDictionary>
<DataTemplate x:Key="headertemp">
<WrapPanel>
<TextBlock Text="{Binding ProcedureName}"></TextBlock>
<Label Content="{Binding Status}"></Label>
</WrapPanel>
</DataTemplate>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Margin" Value="0,2,0,0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Expander HeaderTemplate="{Binding Source={StaticResource headertemp}}">
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Detail}" HeadersVisibility="Column">
<DataGrid.Columns>
<DataGridTextColumn Header="Timestamp" Binding="{Binding TimeStamp}"></DataGridTextColumn>
<DataGridTextColumn Header="Name" Binding="{Binding ProcedureName}"></DataGridTextColumn>
<DataGridTextColumn Header="Details" Binding="{Binding Description}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
这不起作用。我想这个问题可能是因为datatemplate和style都是在同一个'level'级别定义的。但是,即使我将这种风格转移到较低级别的资源词典,比如说一个网格,它也不起作用。 我不是很习惯WPF样式。也欢迎与现有解决方案不同的解决方案。谢谢。
你是什么意思与“它不工作”?我已经复制了示例项目中的xaml代码片段,它工作正常,我用固定字符串替换了绑定。也许绑定是你的问题? – SvenG 2012-03-28 12:22:42
你说得对。绑定是问题。我搜索了一下,发现从资源字典中绑定并不是非常简单。如果有人能帮助我,那将会很棒。我不想通过代码绑定。 – Tulip 2012-03-29 10:13:53