【问题标题】:Textbox multiple binding文本框多重绑定
【发布时间】:2012-10-26 14:02:42
【问题描述】:

在我的 WPF 应用程序中,一个文档有两个属性,报告名称和文件名称。在 UI 中,用户填写报告名称,文件名将自动填充报告名称作为默认值。 在创建新文档的对话框中,我拥有

<TextBox x:Name="tbReportName" Grid.Row="0" Grid.Column="1" Style="{StaticResource DialogInputStyle}"
         Text="{Binding UpdateSourceTrigger=PropertyChanged, Path=ReportName,
                ValidatesOnDataErrors=true, NotifyOnValidationError=true}" />

 <TextBox  Grid.Row="5" Grid.Column="1" Text="{Binding Text,ElementName=tbReportName,UpdateSourceTrigger=PropertyChanged,Mode=OneWay,Converter={StaticResource safefilenamConverter}}"  Style="{StaticResource DialogInputStyle}" >

报告名称绑定到视图模型中的一个属性,我需要对文件名做同样的事情

用户可以选择使用默认文件名或在文本框中更改它。我需要将文件名文本框的值绑定到我的视图模型中的属性,但该绑定已用于从报告名称文本框中获取值。

如果我想保留 MVVM,不知道该使用什么

多重绑定、触发器....有什么想法吗?

【问题讨论】:

    标签: xaml binding


    【解决方案1】:

    它必须在 XAML 中吗?如果在设置 ReportName 时为空,则可以设置 FileName 属性:

    private string _reportName;
    public string ReportName
    {
        get { return _reportName; }
        set
        {
            _reportName = value;
            if(string.IsNullOrEmpty(FileName))
            {
                FileName = _reportName;
            }
            OnPropertyChanged("ReportName");
        }
    }
    
    private string _fileName;
    public string FileName
    {
        get { return _fileName; }
        set
        {
            _fileName = value;
            OnPropertyChanged("FileName");
        }
    }
    

    【讨论】:

    • 感谢您的回答。我不能那样做,因为用户应该能够在连接的文本框中更改默认文件名
    • 您仍然有一个 FileName 属性绑定到第二个文本框,以允许用户覆盖默认文件名。
    • 对不起,没有意识到你的解决方案。猜猜这不应该是一个问题,而更多的是脑窒息的例子
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-23
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    相关资源
    最近更新 更多