You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF窗体中实现文本框与按钮绑定 点击按钮填充对应文本框

问题原因
  • 点击事件中赋值的是窗口的DataContext,而非被点击按钮的DataContext,绑定到按钮上下文的文本框无法接收更新
  • 文本框仅绑定了DataContext数据源上下文,没有绑定Text显示属性,即使上下文更新也不会显示内容
  • 两个对比文件选择按钮未绑定点击事件,点击后不会触发选择逻辑
修复方案

第一步:修改XAML代码

  1. 为所有3个按钮绑定同一个点击事件,同时用Tag属性关联对应要填充的文本框
  2. 删除文本框中冗余的DataContext绑定
    核心修改后的XAML片段:
<GroupBox Header="Create .txt File From Workbook" HorizontalAlignment="Left" Height="118" Margin="10,10,0,0" VerticalAlignment="Top" Width="772" BorderBrush="Black">
    <Grid Margin="0,0,0,4">
        <Button
            x:Name="workbookSelect_btn"
            Content="Select WB Path"
            HorizontalAlignment="Left"
            Margin="10,30,0,0"
            VerticalAlignment="Top"
            Width="102"
            Click="Click_SelectFilePath"
            Tag="{Binding ElementName=workbookPath_txt}"
            Height="23" />
        <TextBox 
            x:Name="workbookPath_txt"
            HorizontalAlignment="Left" 
            Height="23" 
            Margin="126,30,0,0" 
            TextWrapping="Wrap" 
            VerticalAlignment="Top" 
            Width="624"/>
    </Grid>
</GroupBox>

<GroupBox Header="Compare .txt Files" HorizontalAlignment="Left" Height="140" Margin="10,156,0,0" VerticalAlignment="Top" Width="772" BorderBrush="Black">
    <Grid Margin="0,0,0,-42">
        <Button 
            x:Name="selectDev_btn"
            Content="Select Dev File" 
            HorizontalAlignment="Left" 
            Margin="10,10,0,0" 
            VerticalAlignment="Top" 
            Width="96" 
            Click="Click_SelectFilePath"
            Tag="{Binding ElementName=devFilePath}"
            Height="23"/>
        <Button 
            x:Name="selectProd_btn"
            Content="Select Prod File" 
            HorizontalAlignment="Left" 
            Margin="10,48,0,0" 
            VerticalAlignment="Top" 
            Width="96" 
            Click="Click_SelectFilePath"
            Tag="{Binding ElementName=prodFilePath}"
            Height="23"/>
        <TextBox 
            x:Name="devFilePath" 
            HorizontalAlignment="Left" 
            Height="23" Margin="120,10,0,0" 
            TextWrapping="Wrap" 
            Text="" 
            VerticalAlignment="Top" 
            Width="630"/>
        <TextBox 
            x:Name="prodFilePath" 
            HorizontalAlignment="Left" 
            Height="23" 
            Margin="120,48,0,0" 
            TextWrapping="Wrap" 
            Text="" 
            VerticalAlignment="Top" 
            Width="630"/>
    </Grid>       
</GroupBox>

第二步:修改后台点击事件代码

private void Click_SelectFilePath(object sender, RoutedEventArgs e)
{
    System.Windows.Forms.OpenFileDialog ofd = 
        new System.Windows.Forms.OpenFileDialog();
    ofd.Title = "Find File";
    ofd.Filter = "Excel Files (*.xls) | *.xlsm | All Files(*.*) | *.*";  
    // 仅用户确认选择文件时才赋值
    if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
        Button clickedButton = sender as Button;
        TextBox targetTextBox = clickedButton.Tag as TextBox;
        targetTextBox.Text = ofd.FileName;
    }
}

内容的提问来源于stack exchange,提问作者KarkMump

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 21:24:03