У меня проблема с видимостью элемента управления в шаблоне элемента списка.Ниже приведен мой код для привязки данных к свойству Visibility для imagetools: AnimatedImage и Textblock в xaml:
<ListBox x:Name="listSellers" ItemsSource="{Binding TagList}" SelectionChanged="listSellers_SelectionChanged" ScrollViewer.VerticalScrollBarVisibility="Disabled">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Margin="0,12,0,12" Height="132">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" MinWidth="107"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" Margin="0,0,-2,8">
<Grid>
<imagetools:AnimatedImage Source="{Binding Seller.Logo, Converter={StaticResource ImageConverter}}" Stretch="Uniform" Width="240" Template="{StaticResource AnimatedImageControlTemplate1}" Visibility="{Binding LogoVisibility}"/>
<TextBlock x:Name="sellerNameTxtBlock" TextWrapping="Wrap" Text="{Binding Seller.Name}" FontSize="24" FontFamily="Segoe WP" Margin="10,0,0,0" Foreground="#FF354F59" Height="41" Visibility="{Binding Path=SellerNameVisibility}"/>
</Grid>
</Border>
<StackPanel Grid.Column="1" Orientation="Vertical">
<!--<TextBlock TextWrapping="Wrap" Text="{Binding Seller.Name}" FontSize="24" FontFamily="Segoe WP" Margin="10,0,0,0" Foreground="#FF354F59" Height="41"/>-->
<!--<TextBlock TextWrapping="Wrap" Text="amazon.com" FontSize="16" FontFamily="Segoe WP" Margin="10,0,0,0" Foreground="#FF157CCC" Height="35"/>-->
<TextBlock TextWrapping="Wrap" Text="{Binding TotalPrice}" FontSize="21.333" FontFamily="Segoe WP Semibold" Margin="10,0,0,0" Foreground="#cc4225"/>
<TextBlock FontSize="{StaticResource PhoneFontSizeSmall}" Text="{Binding Price}" Margin="10,0,0,0" Foreground="#FF354F59"/>
<TextBlock FontSize="{StaticResource PhoneFontSizeSmall}" Text="{Binding Tax}" Margin="10,0,0,0" Foreground="#FF354F59"/>
<TextBlock FontSize="{StaticResource PhoneFontSizeSmall}" Text="{Binding Shipping}" Margin="10,0,0,0" Foreground="#FF354F59"/>
</StackPanel>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Ниже приводится объявление свойства в модели представления:
public Visibility LogoVisibility
{
get { return (Visibility)GetValue(LogoVisibilityProperty); }
set { SetValue(LogoVisibilityProperty, value); }
}
// Using a DependencyProperty as the backing store for LogoVisibility. This enables animation, styling, binding, etc...
public static readonly DependencyProperty LogoVisibilityProperty =
DependencyProperty.Register("LogoVisibility", typeof(Visibility), typeof(ProductDetailViewModel), new PropertyMetadata(Visibility.Collapsed));
public Visibility SellerNameVisibility
{
get { return (Visibility )GetValue(SellerNameVisibilityProperty); }
set { SetValue(SellerNameVisibilityProperty, value); }
}
// Using a DependencyProperty as the backing store for SellerNameVisibility. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SellerNameVisibilityProperty =
DependencyProperty.Register("SellerNameVisibility", typeof(Visibility), typeof(ProductDetailViewModel), new PropertyMetadata(Visibility.Collapsed));
Ниже приводитсягде я устанавливаю видимость в модели представления:
foreach (Tag tag in tagArray)
{
if (tag.Seller.Logo.Equals(""))
{
tag.Seller.Logo = "Images/NoImageFound.png";
LogoVisibility = Visibility.Collapsed;
SellerNameVisibility = Visibility.Visible;
}
else
{
LogoVisibility = Visibility.Visible;
SellerNameVisibility = Visibility.Collapsed;
}
tag.Price = "Base: " + tag.Price;
if (tag.Tax == null)
{
tag.Tax = "Tax: N/A";
}
else
{
tag.Tax = "Tax: " + tag.Tax;
}
if (tag.Shipping == null)
{
tag.Shipping = "Ship: N/A";
}
else
{
tag.Shipping = "Ship: " + tag.Shipping;
}
tempTagList.Add(tag);
}
TagList = tempTagList;
}
И вот где я устанавливаю текст данных в коде:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
_productDetailViewModel = new ProductDetailViewModel();
DataContext = _productDetailViewModel;
string productTitleId = "";
if (NavigationContext.QueryString.TryGetValue("productTitleId", out productTitleId))
{
_productTitleId = productTitleId;
_productDetailViewModel.getProductDetailFromServer(_productTitleId, "");
}
}
Я также делаю некоторые другие привязки данных в этих файлах, всеони работают.Только это связывание Видимости терпит неудачу.На самом деле не знаю почему.= (Есть идеи? Спасибо !!!