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