通过带有绑定参数的 UserControl 的动态 DataTemplate
Dynamic DataTemplate via UserControl with Binding Parameter
我需要在 ListView 中动态使用 DataTemplate。此数据模板是一个用户控件。我可以动态调用用户控件。但是我无法从用户控件中读取项目。
<ListView.ItemTemplate>
<DataTemplate xmlns:local ="using:App4.Components" x:DataType="models:modelAuftrag">
<local:ucPosListeConteiner Test="{x:Bind auftragNummer}"/>
</DataTemplate>
</ListView.ItemTemplate>
我分享一个代码作为例子。
public static readonly DependencyProperty TestProperty = DependencyProperty.Register
(
"Test",
typeof(string),
typeof(ucPosListeConteiner),
new PropertyMetadata("")
);
public string Test
{
get { return (string)GetValue(TestProperty); }
set { SetValue(TestProperty, value);}
}
和构造函数;
viewModelUcPosListeConteiner model;
public ucPosListeConteiner()
{
this.InitializeComponent();
model = new viewModelUcPosListeConteiner();
this.DataContext = this;
}
运行时;
如果我在构造函数中删除 this.DataContext = 这个语句,代码不会给出错误。但是这次绑定在用户控件中不起作用。
如何在 UserControl 中获取传出数据和绑定?
谢谢...
我已经解决了
我没有用 this.DataContext = 这个;在构造函数中。
这是xaml代码;
<DataTemplate x:Key="dt3" x:DataType="models:modelAuftrag">
<local:ucPosListeConteiner Test="{x:Bind model}"></local:ucPosListeConteiner>
</DataTemplate>
这是 ucPosListeConteiner C# 代码;
public viewModelUcPosListeConteiner Test
{
get { return (viewModelUcPosListeConteiner)GetValue(TestProperty); }
set { SetValue(TestProperty, value); model = new modelPosListe(); model = value; }
}
并且我在 UserControl_Loaded
中将值与 C# 绑定
Binding myBinding = new Binding();
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
myBinding.Source = model;
myBinding.Path = new PropertyPath("test");
myBinding.Mode = BindingMode.TwoWay;
myBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
BindingOperations.SetBinding(txtDeneme, TextBlock.TextProperty, myBinding);
}
我可以绑定并获取导入参数。
我需要在 ListView 中动态使用 DataTemplate。此数据模板是一个用户控件。我可以动态调用用户控件。但是我无法从用户控件中读取项目。
<ListView.ItemTemplate>
<DataTemplate xmlns:local ="using:App4.Components" x:DataType="models:modelAuftrag">
<local:ucPosListeConteiner Test="{x:Bind auftragNummer}"/>
</DataTemplate>
</ListView.ItemTemplate>
我分享一个代码作为例子。
public static readonly DependencyProperty TestProperty = DependencyProperty.Register
(
"Test",
typeof(string),
typeof(ucPosListeConteiner),
new PropertyMetadata("")
);
public string Test
{
get { return (string)GetValue(TestProperty); }
set { SetValue(TestProperty, value);}
}
和构造函数;
viewModelUcPosListeConteiner model;
public ucPosListeConteiner()
{
this.InitializeComponent();
model = new viewModelUcPosListeConteiner();
this.DataContext = this;
}
运行时;
如果我在构造函数中删除 this.DataContext = 这个语句,代码不会给出错误。但是这次绑定在用户控件中不起作用。
如何在 UserControl 中获取传出数据和绑定?
谢谢...
我已经解决了
我没有用 this.DataContext = 这个;在构造函数中。
这是xaml代码;
<DataTemplate x:Key="dt3" x:DataType="models:modelAuftrag">
<local:ucPosListeConteiner Test="{x:Bind model}"></local:ucPosListeConteiner>
</DataTemplate>
这是 ucPosListeConteiner C# 代码;
public viewModelUcPosListeConteiner Test
{
get { return (viewModelUcPosListeConteiner)GetValue(TestProperty); }
set { SetValue(TestProperty, value); model = new modelPosListe(); model = value; }
}
并且我在 UserControl_Loaded
中将值与 C# 绑定 Binding myBinding = new Binding();
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
myBinding.Source = model;
myBinding.Path = new PropertyPath("test");
myBinding.Mode = BindingMode.TwoWay;
myBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
BindingOperations.SetBinding(txtDeneme, TextBlock.TextProperty, myBinding);
}
我可以绑定并获取导入参数。