【问题标题】:binding with object与对象绑定
【发布时间】:2013-04-08 10:05:38
【问题描述】:

我想绑定项目对象中的 projectName 属性...这是我的 view.xaml.cs 文件..

代码隐藏:

        TempData t = new TempData();
        t.Contract = contract;
        t.Project = project;
        this.DataContext = t;

我正在像这样在文本块中绑定它,但它不起作用。

XAML:

<TextBlock Text="{Binding ProjectName,  Mode=TwoWay}" 
           DataContext="{Binding t}" FontSize="20" 
           Foreground="Black" 
           TextAlignment="Right" 
           Margin="100,0,0,0">
     enter code here
</TextBlock>

【问题讨论】:

  • 你能发布你的 TempData 类定义吗? ProjectName 是依赖属性吗?
  • "" 是复制粘贴错误吗?还是在您要执行的代码中?

标签: c# xaml mvvm microsoft-metro windows-store-apps


【解决方案1】:

此时进行绑定时,属性名和绑定路径必须与字符大小写一致。我在这里发布你想要的代码

XAML 不要在两侧使用 DataContext。在 XAML 或代码隐藏中使用

<TextBlock Text="{Binding ProjectName, Mode=TwoWay}" 
           FontSize="20" 
           Foreground="Black" 
           TextAlignment="Right" 
           Margin="100,0,0,0" />

C#

class TempData
{
    public string Contract { get; set; }
    public string ProjectName { get; set; }
}

public sealed partial class BlankPage2 : Page
{
    public BlankPage2()
    {
        this.InitializeComponent();
        string contract = "contract", project = "project";
        TempData t = new TempData();
        t.Contract = contract;
        t.ProjectName = project;
        this.DataContext = t;
    }
}

【讨论】:

    【解决方案2】:

    我想你想说的是这个(但很难说)……

    <TextBlock Text="{Binding Project.ProjectName,  Mode=TwoWay}" 
           FontSize="20" 
           Foreground="Black" 
           TextAlignment="Right" 
           Margin="100,0,0,0">
        ...
    </TextBlock>
    

    如果你愿意的话……

    <TextBlock Text="{Binding ProjectName,  Mode=TwoWay}" 
           DataContext="{Binding Project}" FontSize="20" 
           Foreground="Black" 
           TextAlignment="Right" 
           Margin="100,0,0,0">
        ...
    </TextBlock>
    

    假设您的TempData.ProjectProjectName 的某个项目类

    // in your code-behind...
    this.DataContext = new TempData
    {
        Contract = new Contrac{},
        Project = new Project{ ProjectName = "My proj...", }
    }
    // this is for the window or user-control (I guess) - thus DataContext to start with...
    

    您的 TextBox DataContext 是相同的 (TempData) - 那里没有 t

    这就是你已经在的地方 - 即你的 TextBox 的“上下文”(除非你有一些其他控件,列表项等)。直接绑定Project.ProjectName

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-23
      • 1970-01-01
      • 2016-04-23
      • 2019-10-22
      相关资源
      最近更新 更多