从Code-Behind创建绑定不能正常工作C#XAML

时间:2016-02-15 12:44:10

标签: c# xaml data-binding

Screenshot我有以下代码在代码隐藏中创建绑定。但是,它似乎不起作用(当PageMarginTextBox中的文本发生更改时,没有任何反应,并且在加载应用时,Padding的{​​{1}}未设置为newPage)。更糟糕的是,根本没有PageMarginTextBox被抛出。所有元素都已在之前定义过。

Exceptions

我该如何解决这个问题?任何解决方案将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

您正在尝试将PaddingProperty绑定到文本。填充属性的类型为Thickness,Text属性为String

我不确定您是否要绑定填充/文本,只是想知道是否要绑定Padding。

Binding pageMarginBinding = new Binding
{
    Source = PageMarginTextBox,
    Path = new PropertyPath("Padding"),
};
newPage.SetBinding(ContentControl.PaddingProperty, pageMarginBinding);

您的问题是因为您尝试将string分配给Thickness。在XAML中,编译器在内部转换字符串" 0,0,2,2"到Thickness对象。但是在代码背后你必须自己编写转换代码。

ThicknessConverter myThicknessConverter = new ThicknessConverter();
PageThickness= (Thickness)myThicknessConverter.ConvertFromString(PageMarginTextBox.Text);

然后你必须将它绑定到你的控件。这只是解决方案的一半。您需要使用绑定进行连接。

private Thickness _pageThickness;
public Thickness PageThickness
{
get
 {
   return _pageThickness;
 }
set
 {
  _pageThickness = value;
  NotifyPropertyChanged("PageThickness");
 }

然后你可能可以在XAML中绑定它