我有以下代码在代码隐藏中创建绑定。但是,它似乎不起作用(当PageMarginTextBox
中的文本发生更改时,没有任何反应,并且在加载应用时,Padding
的{{1}}未设置为newPage
)。更糟糕的是,根本没有PageMarginTextBox
被抛出。所有元素都已在之前定义过。
Exceptions
我该如何解决这个问题?任何解决方案将不胜感激。谢谢!
答案 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中绑定它