Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xaml 文本框多重绑定_Xaml_Binding - Fatal编程技术网

Xaml 文本框多重绑定

Xaml 文本框多重绑定,xaml,binding,Xaml,Binding,在我的WPF应用程序中,文档有两个属性:报告名和文件名。在UI中,用户填写报告名,文件名将自动填充为默认报告名。 在创建新文档的对话框中 <TextBox x:Name="tbReportName" Grid.Row="0" Grid.Column="1" Style="{StaticResource DialogInputStyle}" Text="{Binding UpdateSourceTrigger=PropertyChanged, Path=ReportName

在我的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}" />


报告名绑定到viewmodel中的属性,我需要对文件名执行相同的操作

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

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


多重绑定,触发器。。。。有什么想法吗?

它必须是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");
    }
}

谢谢你的回答。Im不能这样做,因为用户应该能够更改已连接文本框中的默认文件名。您仍然将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");
    }
}