2011-08-09 34 views
0

目標:
如果數量值爲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

這個功課? – Kiril

+0

不,這是我個人的WPF項目,旨在提高我在計算機編程方面的技能。 –

+0

「請記住,你有很多產品要展示......」使它聽起來像是一個任務,但它是很酷,如果它是你的;它也可以,如果它是功課,只要確保它有正確的標籤。 – Kiril

回答

0

這裏是對的Int32一個Visability轉換器。現在,將計數傳遞給convert的語法可能需要綁定到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。

+0

1)考慮將「可見性」重命名爲「可見性」。 2)在COnvertBack中拋出異常,如果你不會實現它 – sll

+0

我試着測試你的解決方案,我嘗試使用其他xaml代碼,但沒有影響會發生。你會用什麼建議或創建xaml? –

+0

此代碼的另一個問題「[ValueConversion(typeof(Int32),typeof(Visibility))]此代碼可以幫助我什麼值? 」 –

0

考慮使用布爾對能見度的轉換器,見定製和靈活的轉換器here - BooleanToVisibilityConverter by Kent Boogaart的例子。 或者使用內置的BooleanToVisibilityConverter Class

1)定義布爾屬性像

public bool IsQuantityGreaterThenZero 
{ 
    get 
    { 
     return this.quantity > 0; 
    } 
} 

2)更新在XAML buttond定義中使用的地方與轉換器結合:

<Button Visibility="{Binding IsQuantityGreaterThenZero, 
     Converter={StaticResource yourConverter}}"/> 
+0

爲此,內置的'BooleanToVisibilityConverter'已經可以工作.. –

+0

@ H.B.:好點,所以它使得一個解決方案更容易 – sll

+0

我試圖在我的應用程序中製作布爾到Visibiity轉換器的整個概念的虛擬,我在xaml代碼「「,」沒有找到類型'local:BooleanToVisibilityConverter'。vierfy,你不會錯過一個可信的引用,並且所有引用的集合已經被創建。 –

0

所以,你想要的當「數量」爲零或更少時更改可見性按鈕。 嘗試使用按鈕的可見或可見性屬性。 此C#代碼將使Windows窗體按鈕隱形:

if(quantity <=0) 
    btnReturn.Visibile = false; 
+1

我不會推薦在 – sll

+0

後面的代碼中做這樣的UI東西它是可見的,並且它不是布爾值。 – Paparazzi

相關問題