如何在代码隐藏中设置数据模板子项的值转换器



我想访问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() 之前添加了资源。

相关内容

  • 没有找到相关文章

最新更新