问题描述
在我的 MVVM 项目中,我必须创建一个继承自网格的自定义控件 RowGrid。 这个控件有一个 ItemsSource 和一个 ItemsTemplateSelector。 (我没有使用 ItemsControl,因为我需要为每个孩子设置一个相对大小,我是通过将列宽设置为 x* 来实现的) 我正在尝试使用代码中的 ItemsTemplateSelector 分配模板,但它无法正常工作:
Children.Clear();
int i = 0;
foreach (var element in ItemsSource)
{
if (element != null)
{
DataTemplate dataTemplate = ItemTemplateSelector.SelectTemplate(element,null);
ContentControl contentControl = new ContentControl
{
DataContext = element,ContentTemplate = dataTemplate
};
Children.Add(contentControl);
SetColumn(contentControl,i);
}
i++;
}
ItemTemplateSelector.SelectTemplate 是一个简单的开关/案例,根据元素的类型,返回特定的 DataTemplate。
DataTemplate 示例如下:
<DataTemplate x:Key="StringTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Content="{Binding Name}" Grid.Column="0"></Label>
<customControls:MyStringTextBox MyString="{Binding}" Grid.Column="1"/>
</Grid>
</DataTemplate>
如果我使用 ItemsControl 而不是我的 RowGrid 自定义控件,则 DataTemplate 的绑定起作用。
如果我使用我的自定义控件,他们不会。
这意味着 ItemsSource 没问题,ItemsTemplateSelector 没问题,DataTemplate 也没问题。 问题是我如何将 DataTemplate 和它的 ViewModel 放在一起
我做错了什么? 我错过了什么?
感谢您的支持!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)