Xaml UWP中数据模板内部的数据绑定
我有一个usercontrol,如下所示,它有DataTemplate。我想将DataTemplate中的数据绑定到DataContext中的属性。令人沮丧的是,在Uwp中,他们没有祖先类型,我如何才能使我的东西工作。我已经参考了这篇文章,但它不起作用。请帮忙 用户控制:Xaml UWP中数据模板内部的数据绑定,xaml,uwp,datatemplate,Xaml,Uwp,Datatemplate,我有一个usercontrol,如下所示,它有DataTemplate。我想将DataTemplate中的数据绑定到DataContext中的属性。令人沮丧的是,在Uwp中,他们没有祖先类型,我如何才能使我的东西工作。我已经参考了这篇文章,但它不起作用。请帮忙 用户控制: <local:CommonExpanderUserControl> <local:CommonExpanderUserControl.ExpanderContent> <DataTemplate
<local:CommonExpanderUserControl>
<local:CommonExpanderUserControl.ExpanderContent>
<DataTemplate x:DataType="Data:VmInstrumentSettingsLocal">
<StackPanel>
<TextBlock Text="{Binding LisLocalSettings.SomeText}"/>
<controls:ButtonBadged x:Name="ButtonApplyLisLocalChanges" Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2"
x:Uid="/Application.GlobalizationLibrary/Resources/InstrumentSettingsViewButtonApply"
HorizontalAlignment="Center"
Margin="8"
Command="{Binding LisLocalSettings.SaveLisSettings}"/>
</StackPanel>
</DataTemplate>
</local:CommonExpanderUserControl.ExpanderContent>
</CommonExpanderUserControl>
UWP中数据模板内部的数据绑定
您可以在数据源中放置命令
,但如果数据源是集合,则需要实现多个命令实例。一般来说,我们将命令放在可以重用的当前DataContext中。有关详细步骤,请参考以下内容
<Page.Resources>
<DataTemplate x:Key="HeaderTemplate">
<StackPanel
x:Name="ExpanderHeaderGrid"
Margin="0"
Padding="0"
HorizontalAlignment="Stretch"
Background="Red"
Orientation="Vertical"
>
<TextBlock x:Name="TextBlockLisSharedSettingsTitle" Text="{Binding}" />
<Button Command="{Binding ElementName=RootGrid, Path=DataContext.BtnCommand}" Content="{Binding}" />
</StackPanel>
</DataTemplate>
</Page.Resources>
<Grid x:Name="RootGrid">
<uwpControls:Expander Header="hello" HeaderTemplate="{StaticResource HeaderTemplate}" />
</Grid>
代码隐藏
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
this.DataContext = this;
}
public ICommand BtnCommand
{
get
{
return new CommadEventHandler<object>((s) => BtnClick(s));
}
}
private void BtnClick(object s)
{
}
}
public class CommadEventHandler<T> : ICommand
{
public event EventHandler CanExecuteChanged;
public Action<T> action;
public bool CanExecute(object parameter)
{
return true;
}
public void Execute(object parameter)
{
this.action((T)parameter);
}
public CommadEventHandler(Action<T> action)
{
this.action = action;
}
}
公共密封部分类主页面:第页
{
公共主页()
{
this.InitializeComponent();
this.DataContext=this;
}
公共ICommand BtnCommand
{
得到
{
返回新的CommadEventHandler((s)=>BtnClick(s));
}
}
私有void b单击(对象s)
{
}
}
公共类CommadEventHandler:ICommand
{
公共事件处理程序CanExecuteChanged;
公共行动;
公共布尔CanExecute(对象参数)
{
返回true;
}
public void Execute(对象参数)
{
这个动作((T)参数);
}
公共通讯员(行动)
{
这个动作=动作;
}
}
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
this.DataContext = this;
}
public ICommand BtnCommand
{
get
{
return new CommadEventHandler<object>((s) => BtnClick(s));
}
}
private void BtnClick(object s)
{
}
}
public class CommadEventHandler<T> : ICommand
{
public event EventHandler CanExecuteChanged;
public Action<T> action;
public bool CanExecute(object parameter)
{
return true;
}
public void Execute(object parameter)
{
this.action((T)parameter);
}
public CommadEventHandler(Action<T> action)
{
this.action = action;
}
}