我正在尝试在放置在DataGridTemplateColumn中的customcontrol中绑定一个值,但绑定似乎不起作用。
我的DataGridTemplateColumn:
<DataGridTemplateColumn Width="auto" SortMemberPath="Etat" CanUserReorder="False" CanUserResize="True" x:Name="colonneEtat">
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate />
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<widget:MyWidget MyObject="{Binding MyObjectVariable, Converter={StaticResource MyDebugConverter}}" Margin="5,0" VerticalAlignment="Center"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
我的自定义控件现在只包含一个Grid,但它的属性定义如下:
public static readonly DependencyProperty MyObjectProperty=
DependencyProperty.Register("MyObject",
typeof(ObjectType),
typeof(MyWidget),
new PropertyMetadata(null));
public ObjectType MyObject
{
get { return (ObjectType)GetValue(MyObjectProperty); }
set {
SetValue(MyObjectProperty, value);
FillCustomControl();
}
}
Debug Converter只是一个用于测试绑定的虚拟转换器:
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
System.Diagnostics.Debugger.Break();
return value;
}
我的自定义控件工作正常,我已经在我的应用程序的另一个地方尝试过了。它的功能很简单:当设置属性时,我根据属性中的内容填充自定义控件。如上所述,这种行为已经过测试。
但是在这个DataGridTemplateColumn的情况下,永远不会设置该属性。输出中没有任何绑定错误,调试器在转换器中停止+转换器中的值是预期值。但由于某种原因,它没有在我的自定义控件中设置属性的值。
我错过了什么?
谢谢
答案 0 :(得分:0)
当数据绑定到Request.UserLanguages
时,您应该省略PRIMARY KEY (id)
部分,而不是这样:
$linkexists = false;
foreach ($json as $obj) {
if ($obj['favouriteLinkContent'] == $favouriteLink) {
echo json_encode("HELLO");
$linkexists = true;
}
}
if(!$linkexists){
$json[] = array("favouriteLinkContent" => $favouriteLink,
"favouriteLinkID" => $favouriteLinkID);
file_put_contents($file, json_encode($json));
}
你应该用这个:
Property
除非您的DependencyProperty
课程中确实有另一个名为<widget:MyWidget ObjectProperty="{Binding MyObject ... }" />
<widget:MyWidget MyObject="{Binding MyObject ...}" />
的{{1}}。此外,根据您的代码,设置为DependencyProperty
的{{1}}的对象也应具有名为ObjectPropertyProperty
的属性。
更新&gt;&gt;&gt;
好的,现在我明白了你的问题。也就是说,与Widget
相关的CLR属性的setter是从未调用框架...... CLR属性仅用于您的。如果您想在更改DataContext
值时执行某些操作,则需要设置PropertyChangedCallback
handler。您可以这样做(来自MSDN上的链接页面):
DataGrid
事实上,您甚至可以忽略MyObject
构造函数并将其声明为:
DependencyProperty