如果数量中存在任何值,请勿显示按钮

时间:2011-08-09 20:19:47

标签: c# wpf xaml

目标:
如果数量的值为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> 

5 个答案:

答案 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