在LongListSelector中使用控件
本文关键字:控件 LongListSelector | 更新日期: 2023-09-27 18:03:20
我使用LongListSelector来显示复杂对象列表,并根据绑定对象列表属性中的项数更新数据模板(控件)。我试过以下方法。
- 访问onitemrealize事件中的数据以尝试获取绑定控件并通过方法调用更新它。不确定是否可能
- 向被绑定的控件添加一个属性,当该属性被设置时,将控件添加到换行面板。控件属性中的set访问器永远不会被命中。
希望你清楚我想要达到的目标。
- 是否可以调用被绑定的属性中的功能,如我的控件 所示
- 如果没有,是否可以访问被绑定的控件并以这种方式调用暴露的功能
<DataTemplate x:Key="LLS_SomeTemplate" >
<MyApp:ObjectTemplate SomeObjects="{Binding SomeEntities}"/>
</DataTemplate>
被绑定对象
public class SomeObject
{
public ObservableCollection<Entities> _SomeEntities { get; set; }
public ObservableCollection<Entities> SomeEntities
{
get
{
if (_SomeEntities == null)
_SomeEntities = new ObservableCollection<Entities>();
return _SomeEntities;
}
set
{
_SomeEntities = value;
}
}
public SomeObject()
{
}
}
控制性能得到了public static DependencyProperty SomeObjectsProperty = DependencyProperty.Register("SomeObjects", typeof(ObservableCollection<Entities>), typeof(ObjectTemplate), new PropertyMetadata(new ObservableCollection<Entities>()));
public ObservableCollection<SomeObject> SomeObjects
{
get
{
return (ObservableCollection<SomeObject>)GetValue(SomeObjectsProperty);
}
set
{
SetValue(SomeObjectsProperty, value);
if (value != null && value.Count > 0)
{
foreach (SomeObject eLink in value)
{
//Add a new control to a wrap panel for each object in the list
}
}
}
}
CLR设置依赖属性有几种方法。必须避免在setter中执行操作。创建已更改值的事件处理程序:
public static DependencyProperty SomeObjectsProperty = DependencyProperty.Register("SomeObjects", typeof(ObservableCollection<Entities>), typeof(ObjectTemplate), new PropertyMetadata(new ObservableCollection<Entities>(), new PropertyChangedCallback(OnSomeObjectsPropertyChanged));
private static void OnSomeObjectsPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
(d as ObjectTemplate).UpdateSomeObjects(e.NewValue as SomeObjects);
}
public void UpdateSomeObjects(SomeObjects value)
{
if (value != null && value.Count > 0)
{
foreach (SomeObject eLink in value)
{
//Add a new control to a wrap panel for each object in the list
}
}
}
希望它能帮助你解决你的问题