gpt4 book ai didi

c# - 将 bool 值绑定(bind)到 visualstate

转载 作者:行者123 更新时间:2023-11-30 17:03:29 24 4
gpt4 key购买 nike

我正在使用表达式混合,当列表框没有元素时,我想将文本框的状态更改为红色边框和红色文本。

因此,当文本更改时,我会过滤列表框。

private void OnIPAddressTextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
{
compositeViewModel.manualServerInfoViewModel.FilterServers(IPAddressTextbox.Text);
}

在我的 View 模型中,我过滤结果并检查是否有任何结果。然后我相应地设置 bool 属性

public bool HasResults { get; set; }

public void FilterServers(string FilterCriteria)
{
....
HasResults = (FilteredManualServers.Count > 0)? true : false;
}

在我的 xaml 中,当 HasResults bool 值为假时,我尝试将文本框的状态更改为带有红色边框的视觉状态。

<TextBox x:Name="IPAddressTextbox" Height="27.24" Margin="-92.799,8,0,0" VerticalAlignment="Top" Width="209" Background="#FFF3F3F3" BorderBrush="#FF2F2F2F" TextChanged="OnIPAddressTextChanged" >
<i:Interaction.Behaviors>
<ei:DataStateBehavior Binding="{Binding HasResults}" TrueState="NoResults" />
</i:Interaction.Behaviors>
</TextBox>

这是 NoResult 视觉状态

<VisualStateGroup x:Name="Filtering">
<VisualState x:Name="NoResults">
<Storyboard>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" Storyboard.TargetName="IPAddressTextbox">
<EasingColorKeyFrame KeyTime="0" Value="Red"/>
</ColorAnimationUsingKeyFrames>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(TextElement.Foreground).(SolidColorBrush.Color)" Storyboard.TargetName="IPAddressTextbox">
<EasingColorKeyFrame KeyTime="0" Value="#FFCE1010"/>
</ColorAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>

但是当项目数为空且 bool 值为假时,什么也不会发生。

我做错了什么?

最佳答案

问题在于 UI 不知道 HasResults 的值何时更改。绑定(bind)中没有轮询机制。您必须通知 UI 有关 HasResults 的更改。您有两种可能性。

  1. 当您的 View 模型继承自 DependencyObject 时,将 HasResults 属性转换为依赖属性。有关依赖属性的更多信息:

  2. 在您的 View 模型中实现 INotifyPropertyChanged 接口(interface)并在 HasResults 的 setter 中引发 PropertyChanged 事件

关于c# - 将 bool 值绑定(bind)到 visualstate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18531673/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com