2011-06-22 51 views
-2

我有一些接口和類包含列表我的綁定轉換有什麼問題?

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字符串)

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我在構造函數中

 DataContext = this; 

但仍定義的CS文件 - 沒有什麼工作! 我沒有火轉換事件!

我不知道我做錯了什麼。

請幫忙...

謝謝。 (這段代碼在Silverlight中,ListContainObject不爲空...它在實際對象上的點)

+2

爲什麼你需要一個int字符串轉換器? Int會自動轉換爲字符串。 –

+0

好吧,刪除此轉換也不會幫助我..它仍然不工作 – Yanshof

+2

轉換器是完全多餘的,因爲綁定引擎在所有不是字符串的東西上都會調用ToString。當然它沒有幫助,你的綁定可能已經中斷 –

回答

2

如果沒有您向我們展示您的實施,不能肯定地說,但很可能您沒有使用ItemCount /實施的INotifyPropertyChanged的依賴項屬性。因此,WPF不知道該屬性何時發生變化,UI將不會相應更新(您的冗餘轉換器也不會更新)。

+0

imp。很簡單 - 只是返回項目的數量 – Yanshof

0

在綁定中使用ElementName - 必須解析爲xaml文件中列出的對象的「name」字段 - 我不知道你的代碼是否是這種情況。例如,如果你在你的xaml中有一個名爲「my_listbox」的ListBox控件,那麼你可以很好地綁定到icnlude ElementName =「my_listbox」,但是你在這裏描述它的方式我有一種感覺,你的ListContainObject被聲明在某處代碼在後面?

+0

是的,在stackpanel上我有ItemsControl - 和一個方法的接口只是返回項目的計數。 – Yanshof

0

當你綁定一個int sincer自動完成時,你不需要一個字符串轉換器。可能你的問題是你沒有任何元素x:Name="ListContainObject"

+0

我有代碼 – Yanshof