我在silverlight项目中使用树视图控件。我使用数据绑定将我的模型绑定到树。这很完美。
在向树中添加一些功能后,我遇到了两个问题:
当我更改模型上的属性时,即使我的onproperty更改后调用并且我的转换器未被调用,树也不会更新?(我需要在特定属性更改时隐藏项目) (回答)
如何隐藏树中的项目? (我使用Textbox + image作为项目模板)
隐藏堆栈面板,但空容器仍在树中
的DataTemplate:
<common:HierarchicalDataTemplate ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal" Visibility="{Binding IsAvailable, Converter={StaticResource ItemVisibleConverter} ,Mode=TwoWay}" >
<Image Source="{Binding Converter={StaticResource ImageConverter}}"/>
<controls:Label Name="myItem" Content="{Binding Description, Converter={StaticResource ItemConverter} ,Mode=TwoWay}" Foreground="Black"/>
</StackPanel>
</common:HierarchicalDataTemplate>
转换器: 公共对象转换(对象值,类型targetType,对象参数,ystem.Globalization.CultureInfo文化) { return GetVisibility(value); }
private Visibility GetVisibility(object value)
{
bool IsVisible= (bool)value;
if (IsAvailableForDownload)
{
return Visibility.Visible;
}
else
{
return Visibility.Collapsed;
}
}
模型
public class MyModel: INotifyPropertyChanged
{
public bool IsAvailable
{
get
{
return _IsAvailableForDownload;
}
set
{
_IsAvailableForDownload = value;
onPropertyChanged(this, "IsAvailableForDownload");
}
}
//Code for on property changed event
}
此致
答案 0 :(得分:0)
您可能需要确保model implements INotifyPropertyChanged以便绑定系统能够正常工作。
您的项目模板可以绑定的是Visibility类型的属性,还是bool加上返回Visibility值的值转换器?
&LT;&的DataTemplate GT; &lt; Grid Visibility =“{Binding ThisThingsIsVisible}”&gt; &lt; Button Content =“{Binding Blah}”/&gt; &LT; /网格和GT; &LT; / DataTemplate中&GT;
我不知道这是否是推荐的方式 - 绑定的对象是否可以不在其集合中公开隐藏的项目?