目标:
如果数量的值为0且为负,则不应显示名为“btnReturn”的按钮。
问题:
已经考虑了很多,我找不到解决方案,使按钮不被隐形。
它可以是XAML代码或C#。
请记住,您有很多产品需要显示,我还使用datacontext在XAML和列表之间进行同步。
private void UpdateGUI(int pSaleId)
{
lstRepurchase.DataContext = _myManagerProduct_SaleAndProductQuantity.DisplaySoldProductInTheRepurchaseListView(pSaleId);
}
<ListView Canvas.Left="8" Canvas.Top="49.494" ItemsSource="{Binding}" SelectionMode="Single" Margin="236.78,17.48,8,44.707" Name="lstRepurchase">
<ListView.View>
<GridView>
<GridViewColumn Header="Article Number" Width="auto" DisplayMemberBinding="{Binding Path=_articleNumber}" TextBlock.TextAlignment="Left" />
<GridViewColumn Header="Name" Width="auto" DisplayMemberBinding="{Binding Path=_name}" TextBlock.TextAlignment="Left" />
<GridViewColumn Header="Quantity" Width="auto" DisplayMemberBinding="{Binding Path=_quantity}" TextBlock.TextAlignment="Left" />
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<Button Name="btnReturn" MinHeight="20" MinWidth="50" Content="Delete" Click="btnReturn_Click" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
答案 0 :(得分:0)
您需要将Visibility属性绑定到_quantity属性,并使用转换器接收数量并返回可见性。
以下是有关转换器的一些信息:
http://www.codeproject.com/KB/WPF/OppositeBoolConverter.aspx
答案 1 :(得分:0)
考虑使用布尔到可见性转换器,请参阅自定义和灵活转换器here - BooleanToVisibilityConverter by Kent Boogaart的示例。 或者使用内置的BooleanToVisibilityConverter Class
1)定义布尔属性,如
public bool IsQuantityGreaterThenZero
{
get
{
return this.quantity > 0;
}
}
2)更新XAML中的按钮定义以使用与转换器的绑定:
<Button Visibility="{Binding IsQuantityGreaterThenZero,
Converter={StaticResource yourConverter}}"/>
答案 2 :(得分:0)
因此,当“数量”为零或更少时,您希望按钮更改可见性。 尝试使用按钮的可见或可见性属性。 此C#代码将使Windows窗体按钮不可见:
if(quantity <=0)
btnReturn.Visibile = false;
答案 3 :(得分:0)
这是Int32到Visability的转换器。现在,将计数传递给转换的语法可能需要绑定到ItemSource以进行计数。
[ValueConversion(typeof(Int32), typeof(Visibility))]
public class IntVisabilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
Int32 inCount = (Int32)value;
if (inCount > 0) return Visibility.Visible;
else return Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return true;
}
}
XAML
<xmlns:local="clr-namespace:yourNameSpace"
<local:VisabilityConverter x:Key="visabilityConverter"/>
Visibility="{Binding Path=Count, Converter={StaticResource visabilityConverter}
您需要阅读这些行所在的位置,但它们都在XAML上。
答案 4 :(得分:0)
不要重新发明轮子。 Boolean to Visibility转换器在WPF中是原生的:
http://msdn.microsoft.com/en-us/library/system.windows.controls.booleantovisibilityconverter.aspx