如何在代码隐藏中为 DataTemplate 子项设置 ValueConverter
How to set ValueConverter for DataTemplate child in code behind
我想访问我的 DataTemplate
中的特定控件,并从 CodeBehind.
中将其设置为 ValueConverter
ValueConverter
应该从使用 page/control.
传入
我的 MainPage 正在使用来自不同项目的 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 How to access control from DataTemplate
但是没用
所以现在我的建议是我也可以在代码中这样做
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() 之前添加资源。
我想访问我的 DataTemplate
中的特定控件,并从 CodeBehind.
ValueConverter
ValueConverter
应该从使用 page/control.
我的 MainPage 正在使用来自不同项目的 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 How to access control from DataTemplate
但是没用
所以现在我的建议是我也可以在代码中这样做
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() 之前添加资源。