我有一個UserControl,它僅包含DataTemplate中的TextBlock和TextBox。這是通過以下方式完成的:將樣式應用於DataTemplate中的元素
<UserControl.Resources>
<DataTemplate DataType="{x:Type Binding:StringBindingData}" x:Key="dataTemp">
<StackPanel Orientation="Horizontal" Name="sPanel">
<TextBlock Name="txtDescription" Text="{Binding Description}" />
<TextBox Name="textboxValue" Text="{Binding Mode=TwoWay, Path=Value, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
</DataTemplate>
</UserControl.Resources>
<Grid>
<ItemsControl Name="textItemsControl" ItemsSource="{Binding}"/>
</Grid>
我需要能夠在不同情況下對TextBlock/TextBox應用不同的樣式。例如,在某些情況下,我希望能夠對TextBlock應用白色Foreground或更改TextBox的寬度。
我已經嘗試了幾種不同的方法: 在正在使用的控制我已經爲TextBlock的樣式窗口:
<Style TargetType="{x:Type TextBlock}" >
<Setter Property="Foreground" Value="White" />
</Style>
這個工作對窗口中的所有其他的TextBlocks。
我也嘗試使用
var myDataTemplate = (DataTemplate)this.Resources["dataTemp"];
得到的代碼隱藏在DataTemplate中,但無法得到任何進一步的應用樣式到所有的TextBlock元素。
什麼是「不同的情況」? – Cybermaxs
在一些窗口中,我需要TextBlock有一個白色的前景,並在其他人需要它有一個黑色的前景,例如 – binncheol
這是一個很好的問題。提問者必須非常聰明,也很有吸引力。也可能應該得到一些額外的時間。 – DaveDev