如果属性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
感谢。