Silverlight如何在Data Grid列模板中绑定我的用户控件
|
今天,我在尝试做事时变得疯狂,我认为这很简单。
我希望能够创建用户控件,并在我的数据网格的列模板中使用它
我已经搜索并尝试了几种组合,但似乎没有任何效果
谁能帮我?
public class User
{
public string Name { get; set; }
public bool IsValid { get; set; }
}
partial class MyControl : UserControl
{
private string _value;
public string Value
{
get { return _value; }
set { _value = value;
txt.Text = value;
}
}
public MyControl()
{
InitializeComponent();
}
}
<Grid x:Name=\"LayoutRoot\" Background=\"White\">
<TextBlock x:Name=\"txt\" Text=\"[undefined]\"></TextBlock>
</Grid>
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
var items = new List<User>();
items.Add(new User{Name = \"user 1\", IsValid = true});
items.Add(new User { Name = \"user 2\", IsValid = false });
myGrid.ItemsSource = items;
}
}
<Grid x:Name=\"LayoutRoot\" Background=\"White\">
<sdk:DataGrid x:Name=\"myGrid\" AutoGenerateColumns=\"False\" IsReadOnly=\"True\">
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn Header=\"Name\">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<SilverlightApplication1:MyControl Value=\"{Binding Name}\"></SilverlightApplication1:MyControl>
<!--<TextBlock Text=\"{Binding Name}\"></TextBlock>-->
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
</Grid>
编辑:
我也尝试了以下方法,但是在网格上没有任何结果:
<Grid x:Name=\"LayoutRoot\" Background=\"White\">
<TextBlock x:Name=\"txt\" Text=\"{Binding Value}\"></TextBlock>
</Grid>
public partial class MyControl : UserControl
{
public DependencyProperty ValueProperty =
DependencyProperty.Register(\"Value\",
typeof(string),
typeof(MyControl),
new PropertyMetadata(OnValueChanged));
public string Value
{
get
{
return (string)GetValue(ValueProperty);
}
set
{
SetValue(ValueProperty, value);
NotifyPropertyChanged(\"Value\");
}
}
private static void OnValueChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
((MyControl) d).Value = (String)e.NewValue; //ERROR: here I got always empty string
}
public MyControl()
{
InitializeComponent();
}
}
没有找到相关结果
已邀请:
2 个回复
奥李
)上,它必须是一个依赖项属性。您在第二段代码中修复了该问题。 这是我所做的(效果很好):
其余的,我用了你的代码。 另一种可能是可以的,如果只希望数据沿一个方向流动(从源到目标的“单向”),使用
控件时就是在其中更新update9ѭ属性。 \“ OnValueChanged \”。这是Value属性的代码:
您可以删除xaml中的绑定:
这也为我工作。 希望这可以帮助 ;)
豹芜澈