首页 > 解决方案 > 从元素获取触发器

问题描述

所以我有这个问题。我想数据触发 WPF 中网格的列可见性,但我无法将视图中的属性名称与 ViewModel 中的实际属性绑定。

视图如下所示:

<Page x:Class="ImageViewer.Pages.ImageViewPage">
<Grid.ColumnDefinitions>
   <ColumnDefinition  x:Name="SidePanelColumn">
        <ColumnDefinition.Style>                    
            <Style TargetType="ColumnDefinition">
                <Setter Property="Width" Value="250"/>
                <Setter Property="MinWidth" Value="250"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding}" x:Name="SidePanelColumnVisibility" Value="True">
                        <Setter Property="Width" Value="0"/>
                        <Setter Property="MinWidth" Value="0"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </ColumnDefinition.Style>
    </ColumnDefinition>

绑定是这样完成的(对于其他属性):

 this.OneWayBind(ViewModel, vm => vm.AppCursor, v => v.Cursor).DisposeWith(cleanup);

在这里,我们将 ViewModel 中的属性名称 AppCursor 与 View 中的属性 Cursor 绑定。

我想对SidePanelColumnVisibility. 我的问题是我似乎无法从视图访问 SidePanelColumnVisibility。

投标应该看起来像

this.OneWayBind(ViewModel, vm => vm.SidebarVisible, v => v.SidePanelColumnVisibility).DisposeWith(cleanup);

this.SidePanelColumn.Style.Triggers检查此元素时,我可以看到我的触发器,但找不到通过其名称 SidePanelColumnVisibility 获取触发器的方法。

我对 WPF 相当陌生(已经做了一个星期)。我肯定在某个地方误解了某些东西,任何帮助都会很棒。

乐:

该列看起来像这样

 <ListBox Grid.Column="0" 
                 MinWidth="250" 
                 x:Name="FrameListBox" 
                 BorderThickness="0" 
                 HorizontalContentAlignment="Stretch" 
                 ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
                 ScrollViewer.VerticalScrollBarVisibility="Visible">
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <UniformGrid Columns="1"></UniformGrid>
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Image MinWidth="200" Height="Auto" Width="Auto" Source ="{Binding}" Stretch="Uniform"></Image>
                </DataTemplate>
           </ListBox.ItemTemplate>         
        </ListBox>

标签: c#wpfreactiveui

解决方案


推荐阅读