3
我正在使用表達式混合,並且當列表框沒有元素時,我想將文本框的狀態更改爲紅色邊框和紅色文本。將布爾值綁定到visualstate
因此,當文本更改我篩選列表框。
private void OnIPAddressTextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
{
compositeViewModel.manualServerInfoViewModel.FilterServers(IPAddressTextbox.Text);
}
在我的viewmodel我篩選結果,並檢查是否有任何結果。然後,我因此
public bool HasResults { get; set; }
public void FilterServers(string FilterCriteria)
{
....
HasResults = (FilteredManualServers.Count > 0)? true : false;
}
在我的XAML中設置的布爾屬性我嘗試在HasResults布爾是假的文本框來改變國家的的visualSTATE與紅色邊框。
<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的visualSTATE
<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>
但是,當項目的數量是空的,布爾是假的,沒有任何反應。
我在做什麼錯?
請提供您的HasResults屬性的實現。它是一個依賴屬性?或者它從INotifyPropertyChanged引發PropertyChanged事件? –
不,HasResults只是我ViewModel中的一個公共屬性。請參閱編輯 –