簡體   English   中英

WPF窗口不會通過屬性綁定更新

[英]WPF window doesn't get updated by property binding

我有一個WPF表單,其中包含一個在xaml文件中定義的文本框,如下所示:

<TextBox Grid.Column="1"  Grid.Row="9" TabIndex="0" x:Name="txtboxExample" Width="170" >
    <TextBox.Style>
        <Style TargetType="{x:Type TextBox}">
            <Setter Property="Visibility" Value="Hidden" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding ToolDataContext.ItemInstance.IsToShow, Mode=TwoWay}" Value="True">
                    <Setter Property="Visibility" Value="Visible" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
    <TextBox.Text>
        <Binding Path="ToolDataContext.ItemInstance.UserText" UpdateSourceTrigger="PropertyChanged" />      
    </TextBox.Text>
</TextBox>
...
<Button Click="someBtn_Click" Content="{x:Static res:Strings.ButtonString}" Name="someButton">

在xaml.cs文件上,我具有以下代碼:

private void someBtn_Click(object sender, RoutedEventArgs e)
{
    ...
    ToolDataContext.ItemInstance.IsToShow = true;
    ...
}

在Item類中,我具有屬性IsToShow的以下代碼:

public class Item : SyncableObject, ISearchableObject, INotifyPropertyChanged
{
    ...

    private bool _isToShow;
    public bool IsToShow
    {
        get { return _isToShow; }
        set
        {
            if (value == _isToShow)
                return;

            _isToShow = value;
            this.OnPropertyChanged("IsToShow");                
        }
    }

    ...

    new public event PropertyChangedEventHandler PropertyChanged;
    new public void OnPropertyChanged(string propertyName)
    {
        PropertyChangedEventHandler handler = this.PropertyChanged;
        if (handler != null)
            handler(this, new PropertyChangedEventArgs(propertyName));
    }

    ...
}

我希望當我在按鈕上單擊時,窗口會顯示文本框。 但這不會發生。

誰能給我一個有關我做錯了什么的線索?

嘗試將Path添加到數據觸發器綁定

<DataTrigger Binding="{Binding Path=ToolDataContext.ItemInstance.IsToShow, Mode=TwoWay}" Value="True">
<DataTrigger Binding="{Binding ToolDataContext.ItemInstance.IsToShow, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Value="True">

假設您已分配數據上下文,則需要添加UpdateSourceTrigger = PropertyChanged

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM