有人可以说明这是如何正确完成的吗?我在后面生成的代码中遇到编译器错误。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition Height="100"/>
</Grid.RowDefinitions>
<Rectangle x:Name="BlueRect" Width="100" Height="100" Grid.Row="1" Fill="Blue" />
<Rectangle Width="100" Height="100" Grid.Row="{x:Bind BlueRect.(Grid.Row),Mode=OneWay}" Fill="Red" />
</Grid>
(这只是一个最小的例子,没有Mode=OneWay
它显然有效,但我需要...而且,我想用{x:Bind}
而不是传统的{{Binding}
{1}})
答案 0 :(得分:0)
使用元素名称绑定:
<Rectangle Width="100" Height="100" Grid.Row="{Binding ElementName=BlueRect,Path=(Grid.Row),Mode=OneWay}" Fill="Red" />
答案 1 :(得分:0)
您可以在Visual Studio connect上报告此内容。
我认为您可以通过在更改行时调用this.Bindings.Update()
并保持x:bind OneTime来考虑解决此问题。
例如,我们可以在按钮单击中更改“BlueRect”的Grid.Row,以下代码显示了我们如何处理这种情况。
在XAML中:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition Height="100"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Rectangle x:Name="BlueRect" Width="100" Height="100" Grid.Row="1" Fill="Blue" />
<Rectangle Width="100" Height="100" Grid.Row="{x:Bind BlueRect.(Grid.Row)}" Fill="Red" />
<Button Content="Click me" Grid.Row="3" Click="Button_Click"></Button>
</Grid>
代码背后:
private void Button_Click(object sender, RoutedEventArgs e)
{
Grid.SetRow(BlueRect, 2);
this.Bindings.Update();
}
当数据加载异步时,也可以使用 this.Bindings.Update()
,并且在x:bind初始化之前数据可能没有准备好。