UWP Swipeitem 不会看到任何绑定
UWP Swipeitem won't see any bindings
出于某种原因,我无法对 UWP Xaml SwipeItem 控件使用任何绑定。我已经以多种不同的方式尝试过它并使用不同的 SwipeItem 属性,但每次它都是空的。更奇怪的是任何类型的 x:Bind 到任何 属性 都会崩溃。
如果有人标记这个:
SwipeItem XAML Binding ignored
作为一个重复的问题,它不是所以不要这样做,否则我会吓坏的。这个问题甚至都没有回答。
<SwipeControl>
<SwipeControl.LeftItems>
<SwipeItems Mode="Execute">
<SwipeItem Text="{Binding}" Background="{StaticResource MIIGreen}" BehaviorOnInvoked="Close"/>
</SwipeItems>
</SwipeControl.LeftItems>
<SwipeControl.RightItems>
<SwipeItems Mode="Execute">
<SwipeItem Background="{StaticResource MIIRed}" BehaviorOnInvoked="Close" Command="{StaticResource CommandEnclosureNotInstalled}" CommandParameter="{Binding}"/>
</SwipeItems>
</SwipeControl.RightItems>
</SwipeControl>
DataContext 只是一个简单的 DataModel,所有其他控件都可以正常绑定。该命令来自静态资源,并且该命令运行良好。在此示例中,当尝试将任何内容绑定到 Text 或 CommandParamter 属性时,Binding 或 x:Bind 的任意组合要么什么都不做,要么崩溃。 SwipItem 控件一定有问题,我需要一种通过 CommandParameter 传递 DataContext 的方法。
SwipeControl不是标准的itemControl,它没有dataTemplate,所以SwipeItem找不到父视图的DataContext,所以不能直接在xaml中直接使用Binding。看来你只能在代码中使用Binding。(下面我举LeftItems的例子)
在xaml中:
<SwipeControl Margin="50" LeftItems="{Binding leftItems}">
</SwipeControl>
在 CS:
public SwipeItems leftItems { get; set; }
public MainPage()
{
this.InitializeComponent();
SwipeItem leftItem = new SwipeItem();
Binding myBinding = new Binding();
myBinding.Source = viewmodel;
myBinding.Path = new PropertyPath("MyText"); //the property in viewmodel
BindingOperations.SetBinding(leftItem, SwipeItem.CommandParameterProperty, myBinding);
BindingOperations.SetBinding(leftItem, SwipeItem.TextProperty, myBinding);
Binding commandBinding = new Binding();
commandBinding.Source = new FavoriteCommand(); //command class
BindingOperations.SetBinding(leftItem, SwipeItem.CommandProperty, commandBinding);
leftItems = new SwipeItems() {
leftItem
};
this.DataContext = this;
}
出于某种原因,我无法对 UWP Xaml SwipeItem 控件使用任何绑定。我已经以多种不同的方式尝试过它并使用不同的 SwipeItem 属性,但每次它都是空的。更奇怪的是任何类型的 x:Bind 到任何 属性 都会崩溃。
如果有人标记这个: SwipeItem XAML Binding ignored
作为一个重复的问题,它不是所以不要这样做,否则我会吓坏的。这个问题甚至都没有回答。
<SwipeControl>
<SwipeControl.LeftItems>
<SwipeItems Mode="Execute">
<SwipeItem Text="{Binding}" Background="{StaticResource MIIGreen}" BehaviorOnInvoked="Close"/>
</SwipeItems>
</SwipeControl.LeftItems>
<SwipeControl.RightItems>
<SwipeItems Mode="Execute">
<SwipeItem Background="{StaticResource MIIRed}" BehaviorOnInvoked="Close" Command="{StaticResource CommandEnclosureNotInstalled}" CommandParameter="{Binding}"/>
</SwipeItems>
</SwipeControl.RightItems>
</SwipeControl>
DataContext 只是一个简单的 DataModel,所有其他控件都可以正常绑定。该命令来自静态资源,并且该命令运行良好。在此示例中,当尝试将任何内容绑定到 Text 或 CommandParamter 属性时,Binding 或 x:Bind 的任意组合要么什么都不做,要么崩溃。 SwipItem 控件一定有问题,我需要一种通过 CommandParameter 传递 DataContext 的方法。
SwipeControl不是标准的itemControl,它没有dataTemplate,所以SwipeItem找不到父视图的DataContext,所以不能直接在xaml中直接使用Binding。看来你只能在代码中使用Binding。(下面我举LeftItems的例子)
在xaml中:
<SwipeControl Margin="50" LeftItems="{Binding leftItems}">
</SwipeControl>
在 CS:
public SwipeItems leftItems { get; set; }
public MainPage()
{
this.InitializeComponent();
SwipeItem leftItem = new SwipeItem();
Binding myBinding = new Binding();
myBinding.Source = viewmodel;
myBinding.Path = new PropertyPath("MyText"); //the property in viewmodel
BindingOperations.SetBinding(leftItem, SwipeItem.CommandParameterProperty, myBinding);
BindingOperations.SetBinding(leftItem, SwipeItem.TextProperty, myBinding);
Binding commandBinding = new Binding();
commandBinding.Source = new FavoriteCommand(); //command class
BindingOperations.SetBinding(leftItem, SwipeItem.CommandProperty, commandBinding);
leftItems = new SwipeItems() {
leftItem
};
this.DataContext = this;
}