【问题标题】:UWP XAML Binding to another object is not workingUWP XAML 绑定到另一个对象不起作用
【发布时间】:2019-06-02 00:09:26
【问题描述】:

我正在尝试将 TextBlock Width 绑定到另一个对象的 Width。

它不起作用,TextBlock 宽度保持为文本长度,而不是“BitsListView”宽度。

有趣的是,当我在调试时编辑 TextBlock 的“宽度”时,绑定工作正常。

<StackPanel >
     <StackPanel Orientation="Horizontal" >
         <TextBlock Text="{x:Bind name}" Width="{Binding ElementName=BitsListView, Path=ActualWidth }"/>
     </StackPanel>

     <ListBox x:Name="BitsListView" ItemsSource="{x:Bind BitsList, Mode=TwoWay}">
         <ListBox.ItemsPanel>
             <ItemsPanelTemplate>
                 <StackPanel Orientation="Horizontal"/>
             </ItemsPanelTemplate>
         </ListBox.ItemsPanel>
     </ListBox>                               
</StackPanel>

有什么想法吗?

【问题讨论】:

  • 以下是否有效?如果解决了您的问题,请考虑接受。
  • 您好,感谢您的解决方案我没有测试这个,因为水平方向是必须的。
  • 您的生产环境中的真实场景是什么。在这种情况下,当我们设置 Horizo​​ntal 时,UI 渲染系统似乎不知道它如何以触发您的问题的 Horizo​​ntal 方式渲染您的 textblock 和 listview。通常将其设置为垂直或禁用水平修复此问题。所以问题是你真正的要求是什么,我们可以考虑一个解决方法吗?

标签: xaml uwp


【解决方案1】:

UWP XAML 绑定到另一个对象不起作用

问题是当设置TextBlock根面板Orientation属性为Horizontal时,内容的宽度会被固定。因此,如果您想让Binding 工作,请删除Orientation 属性,如下所示。

<StackPanel>
    <Border BorderBrush="Red" BorderThickness="2" HorizontalAlignment="Stretch" Margin="0,0,0,0">
        <TextBlock Name="TestBlock"  Text="Test input some"   Width="{Binding ElementName=BitsListView, Path=ActualWidth}"/>
    </Border>
</StackPanel>

【讨论】:

    猜你喜欢
    • 2019-01-28
    • 2018-01-11
    • 2016-04-28
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    • 2016-07-27
    相关资源
    最近更新 更多