我有一些包含List
的接口和类public interface IListContain
{
Int32 ItemCount
{
get;
}
}
public class myStackPanel : StackPanel, IListContain
{
... // implimentation ...
}
我想在一些TextBlock和对象实例myStackPanel上的'指向'变量之间进行绑定 - 所以我写的是这样的
XAML:
<TextBlock x:Name="ItemCount" FontSize="12" Text="{Binding ElementName=ListContainObject, Path=ItemCount,Converter={StaticResource IntConverter}}" />
转换代码(int to string)
public class IntToStringConverter : IValueConverter
{
public object Convert( object value, Type targetType, object parameter, CultureInfo culture )
{
return ( ( int )value ).ToString();
}
public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture )
{
int result;
var succes = int.TryParse( ( string )value, out result );
return succes ? result : 0;
}
}
在xaml的cs文件中,我在构造函数中定义了
DataContext = this;
但仍然 - 没有任何作用! 我没有火灾转换事件!
我不知道我做错了什么。
请帮忙......
感谢。 (此代码在silverlight中,ListContainObject不为null ......它在真实对象上的点)
答案 0 :(得分:2)
如果没有向我们展示您的实施,则无法肯定地说,但您可能没有使用ItemCount
/已实施INotifyPropertyChanged
的依赖属性。因此,WPF不知道属性何时发生变化,UI也不会相应更新(也不会更新冗余转换器)。
答案 1 :(得分:0)
您在绑定中使用ElementName - 这必须解析为xaml文件中列出的对象的“name”字段 - 我不确定您的代码是否就是这种情况。例如,如果你的xaml中有一个名为“my_listbox”的ListBox控件,那么你可以将你的绑定设置为icnlude ElementName =“my_listbox”,但你在这里描述它的方式我感觉你的ListContainObject在某处被声明了代码背后?
答案 2 :(得分:0)
绑定int时,您不需要字符串转换器,因为自动完成。可能你的问题是你没有x:Name="ListContainObject"