wpf:麻烦绑定到子类

时间:2018-02-06 23:43:48

标签: c# wpf xaml binding textbox

我在理解子类中属性的绑定时遇到问题。 这是我的代码: MainWindow.XAML

javax.bluetooth.ServiceRecord getConnectionUrl()

Manager.cs

<Window x:Class="Datagrid_vs_Database.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:Datagrid_vs_Database"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <StackPanel>
        <TextBlock x:Name="txtPath" Text="{Binding Path=CurrentDatabase.FullFilePath, UpdateSourceTrigger=PropertyChanged}"/>
        <Button Command="{Binding openFileBrowser}" Content="New Database"/>
    </StackPanel>
</Grid>

database.cs

public class Manager
{
    private static readonly Manager instance = new Manager();
    public static Manager Instance { get { return instance; } }
    public IComOpenFileBrowser openFileBrowser { get; private set; }
    MainWindow mainWindow;
    public Database CurrentDatabase;

    private Manager()
    {
        openFileBrowser = new IComOpenFileBrowser(SaveFileDialog);
        CurrentDatabase = new Database();

        mainWindow = new MainWindow();
        mainWindow.DataContext = this;
        mainWindow.Show();
    }

    private void SaveFileDialog()
    {
        var sfd = new SaveFileDialog();
        sfd.Title = "Choose a filename and a directory to store the new database";
        sfd.Filter = "SQLite Database (*.sqlite)|*.sqlite";
        if (sfd.ShowDialog() == true)
        {
            CurrentDatabase.FullFilePath = sfd.FileName;
        }
    }
}

当我点击按钮时,会出现SaveFileDialog,但当我输入名称并单击OK时,文件名不会显示在文本框中。

但是:当我设置mainWindow.txtPath.DataContext = CurrentDatabase;并删除&#34; CurrentDatabase。&#34;从XAML代码然后它的工作原理。 我认为将整个窗口的DataContext设置为manager类,然后通过.. {Binding Path = CurrentDatabase.FullFilePath}访问XAML中的子类是正确的。 但显然事实并非如此。 任何人都可以告诉我我在这里的误解吗?

0 个答案:

没有答案