我想访问DataTemplate
中的特定控件,并从CodeBehind设置它ValueConverter
。
ValueConverter
应从使用页/控件传入。
我的主页正在使用来自不同项目的UserControls,因为它们应该在我的大多数应用程序中使用。
UserControl
如下所示:
<Grid>
<ListView Name="SampleListView">
<ListView.ItemTemplate>
<DataTemplate>
<Grid Name="SampleGrid">
<TextBlock Name="SampleTextBox" Text="{Binding BindingProperty}" />
<TextBlock Name="TextBoxIWantToAccess" Foreground="{Binding SampleDateTime, Converter={StaticResource DateTimeToColorConverter}}"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
所以我的建议是首先从代码后面访问它,但它不起作用......
我试过这个: 代码隐藏中的绑定(转换器)
结合这个: WPF 如何从数据模板访问控制
但它没有用
所以现在我的建议是我也可以在代码中这样做
public MyUserControl1(IValueConverter converter)
{
this.InitializeComponent();
this.Resources.Add("DateTimeToColorConverter", converter);
}
但是它没有用...
也许它是... Converter={StaticResource DateTimeToColorConverter}}"
的,不应该指定为StaticResource,因为它来自CodeBehind
但是我尝试了很多组合,但没有奏效...
有什么建议吗?
以下内容对我有用:
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<ListView>
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}"
Foreground="{Binding Converter={StaticResource MyConverter}}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
在代码隐藏中:
public MyUserControl1()
{
this.Resources["MyConverter"] = new FooConverter();
this.InitializeComponent();
}
请注意,我在调用 InitializeComponent() 之前添加了资源。