我有以下代碼:我可以綁定反對的WinRT/Windows 8的應用程序商店一DynamicObject
public class MyClass: DynamicObject, INotifyPropertyChanged
{
Dictionary<string, object> properties = new Dictionary<string, object>();
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
if (properties.ContainsKey(binder.Name))
{
result = properties[binder.Name];
return true;
}
else
{
result = "Invalid Property!";
return false;
}
}
public override bool TrySetMember(SetMemberBinder binder, object value)
{
properties[binder.Name] = value;
this.OnPropertyChanged(binder.Name);
return true;
}
public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
{
dynamic method = properties[binder.Name];
result = method(args[0].ToString(), args[1].ToString());
return true;
}
///.... Rest of the class.
}
當我對着它綁定在XAML中,TryGetMember調試點不triggeret。我想念什麼?
<DataTemplate x:Key="SearchResults">
<Grid Width="294" Margin="6">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Margin="0,0,0,10" Width="40" Height="40">
<Image Source="{Binding Path=Banner}" Stretch="UniformToFill"/>
</Border>
<StackPanel Grid.Column="1" Margin="10,-10,0,0">
<TextBlock Text="{Binding SeriesName}" Style="{StaticResource BodyTextStyle}" TextWrapping="NoWrap"/>
<TextBlock Text="{Binding Subtitle}" Style="{StaticResource BodyTextStyle}" Foreground="{StaticResource ApplicationSecondaryForegroundThemeBrush}" TextWrapping="NoWrap"/>
<TextBlock Text="{Binding Overview}" Style="{StaticResource BodyTextStyle}" Foreground="{StaticResource ApplicationSecondaryForegroundThemeBrush}" TextWrapping="NoWrap"/>
</StackPanel>
</Grid>
</DataTemplate>
的DataContext設置
public ObservableCollection<dynamic> SearchResults {get;set;}
和
ICollection col = item.SearchResults;
this.DefaultViewModel["Results"] = col; //this is the datacontext of the gridview
我敢打賭,結合是不正確的。顯示XAML綁定以及.... – sll
更新它以包含綁定 –
我包含一個正常的屬性:public string SeriesName {get {return _name; } set {SetProperty(ref _name,value); }}並且綁定正確。 –