C# x:绑定不绑定到附加属性
有人能插话说明这是如何正确完成的吗?生成的代码中有一个编译器错误C# x:绑定不绑定到附加属性,c#,xaml,windows-10,uwp,C#,Xaml,Windows 10,Uwp,有人能插话说明这是如何正确完成的吗?生成的代码中有一个编译器错误 <Grid> <Grid.RowDefinitions> <RowDefinition Height="100"/> <RowDefinition Height="100"/> </Grid.RowDefinitions> <Rectangle x:Name="BlueRect" Width="100" Hei
<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>
(这只是一个很小的例子,没有
模式=one-way
,它显然可以工作,但我需要它…另外,我想用{x:Bind}
而不是传统的{Binding}
)使用元素名进行绑定:
<Rectangle Width="100" Height="100" Grid.Row="{Binding ElementName=BlueRect,Path=(Grid.Row),Mode=OneWay}" Fill="Red" />
您可以就此进行报告
我想你可以通过调用<代码>这个.Buffux.UpDebug()/<代码>来考虑这一点,当你改变行并保持X:绑定一次。< /P> 例如,我们可以通过单击按钮将Grid.Row更改为“BlueRect”,下面的代码显示了如何处理此场景
在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>
异步加载数据时,也可以使用this.Bindings.Update(),在初始化x:bind之前,数据可能还没有准备好。您可以发布错误是什么吗?沿矩形
行的某些内容不包含成员行
请尝试将x:Name
更改为Name
。通读一遍,看起来你做得很对。似乎他们错过了那个用例,没有模式,没有附加属性,比如Rect.Fill
,没有一个用例的例子。如果在一段时间内没有解决方案,也许你应该向MS报告一个错误。@Bart是的,我实际上认为这是生成的方法中的一个非常简单的错误,它只是使用了错误的类型。你告诉我Bindings.Update()很好,但我想我们都同意,这不是这个错误的解决方案。我可以看到各种不想要的事情发生在这种方法。x:Bind
比Binding
的最大优势应该是速度。这就是为什么OneTime
的绑定模式是标准的原因。这将不允许在同一视图上进行trueOneTime
绑定。而且,这是一场噩梦。我在VisualStudio中通过笑脸图标提交了一个bug,我只希望它能尽快修复,因为它实际上只是代码生成器中的一个简单的错误。同意。因此,这只是针对特定场景的一种变通方法。我也会尝试通过内部方式报告,但不能说什么时候可以修复。X:Bind还有很长的路要走。
private void Button_Click(object sender, RoutedEventArgs e)
{
Grid.SetRow(BlueRect, 2);
this.Bindings.Update();
}