Datatrigger无法在xaml中看到默认属性值

时间:2017-12-04 10:48:37

标签: c# wpf xaml

如果属性ConnectionStatus为True,我正在尝试在xaml中显示控件,此属性具有以下结构:

    private bool _connectionStatus = true;
    public bool ConnectionStatus
    {
        get { return _connectionStatus; }
        set
        {
            _connectionStatus = value;
            OnPropertyChanged();
        }
    }

并且您可以看到此属性具有true作为默认值。 然后在我的xaml窗口中,我使用DataTrigger根据ConnectionStatus值显示或隐藏控件。到目前为止我做了什么:

 <StackPanel Grid.Column="1">
     <StackPanel.Style>
         <Style TargetType="StackPanel">
             <Setter Property="Visibility" Value="Collapsed" />
                 <Style.Triggers>
                     <DataTrigger Binding="{Binding ConnectionStatus}" Value="True">
                          <Setter Property="Visibility" Value="Visible" />
                     </DataTrigger>
                 </Style.Triggers>
         </Style>
    </StackPanel.Style>
    <Ellipse Fill="#FF51FF00" Height="17" Width="17" Margin="0,5,0,0" StrokeThickness="1" Stroke="White" />
 </StackPanel>

现在问题是Ellipse根本没有显示',导致整个StackPanel崩溃,但是当我设置{时,它不应该导致属性值为True {1}}在xaml代码中,我正确显示False

请注意:这种情况只发生在预览窗口,如果我启动应用程序一切正常。有人可以解释一下为什么在预览中触发器没有正确读取属性值?

更多信息

Ellipse的窗口以这种方式声明了StackPanel

DataContext

然后xmlns:local="clr-namespace:MyApp.MVVM.ViewModels" d:DataContext="{d:DesignInstance local:ConnectionVM}"> 有了这个实现:

ConnectionVM

并且public class ConnectionVM: ViewModel { //the property defined on top } 具有以下结构:

ViewModel

感谢。

0 个答案:

没有答案