2010-05-19 4 views
0

나는 값 0,1에 기초한 requirment를 가지고 있는데, 나는 이미지를 보여주고있다.이미지가 데이터 갠트리에서도 보이지 않을 때 버튼을 보이지 않게 만드는 방법

값이 0이면 이미지가 표시되지 않습니다.

값이 1이면 이미지가 표시됩니다.

하지만 여기서는 행에 대한 이미지가 표시되지 않습니다. 나는 심지어 단추가 보이지 않기를 원합니 까?

이제 이미지가 표시되지 않을 때 버튼이 보이지 않아도됩니다. 해당 행에

이 어떻게 보여주기 위해이 문제를

링크를 해결할 수있는 방법 screen shot

이 내 XAML 코드입니다. 그 작품

<Button x:Name="myButton" 
          Click="myButton_Click"> 
           <StackPanel Orientation="Horizontal"> 
            <Image Margin="2, 2, 2, 2" x:Name="imgMarks" Stretch="Fill" Width="12" Height="12" 
              Source="Images/detail.JPG" 
              VerticalAlignment="Center" 
              HorizontalAlignment="Center" 
             Visibility="{Binding Level, Converter={StaticResource LevelToVisibility}}" 
            /> 


           </StackPanel> 
          </Button> 

감사

왕자 나 좀 도와 호야 솔루션을 찾고 내 XAML 코드

<UserControl x:Class="SLGridImage.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:sdk="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" 
    xmlns:local="clr-namespace:SLGridImage" 

    mc:Ignorable="d" 
    d:DesignHeight="300" d:DesignWidth="400" > 

    <UserControl.Resources> 
     <local:LevelToVisibilityConverter x:Key="LevelToVisibility" /> 
    </UserControl.Resources> 


    <Grid x:Name="LayoutRoot" Background="White"> 
     <sdk:DataGrid x:Name="dgMarks" CanUserResizeColumns="False" SelectionMode="Single" 
       AutoGenerateColumns="False" 
         VerticalAlignment="Top" 
         ItemsSource="{Binding MarkCollection}" 
         IsReadOnly="True" 
         Margin="13,44,0,0" 
         RowDetailsVisibilityMode="Collapsed" Height="391" 
         HorizontalAlignment="Left" Width="965" 
         VerticalScrollBarVisibility="Visible" > 
      <sdk:DataGrid.Columns> 
       <sdk:DataGridTemplateColumn> 
        <sdk:DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <Button x:Name="myButton" 
          Click="myButton_Click"> 
           <StackPanel Orientation="Horizontal"> 
            <Image Margin="2, 2, 2, 2" x:Name="imgMarks" Stretch="Fill" Width="12" Height="12" 
              Source="Images/detail.JPG" 
              VerticalAlignment="Center" 
              HorizontalAlignment="Center" 
             Visibility="{Binding Level, Converter={StaticResource LevelToVisibility}}" 
            /> 


           </StackPanel> 
          </Button> 
         </DataTemplate> 
        </sdk:DataGridTemplateColumn.CellTemplate> 
       </sdk:DataGridTemplateColumn> 
       <sdk:DataGridTemplateColumn Header="Name" > 
        <sdk:DataGridTemplateColumn.CellTemplate> 
         <DataTemplate > 
          <Border> 
           <TextBlock Text="{Binding Name}" /> 
          </Border> 
         </DataTemplate> 
        </sdk:DataGridTemplateColumn.CellTemplate> 
       </sdk:DataGridTemplateColumn> 

       <sdk:DataGridTemplateColumn Header="Marks" Width="80"> 
        <sdk:DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <Border> 
           <TextBlock Text="{Binding Marks}" /> 
          </Border> 
         </DataTemplate> 
        </sdk:DataGridTemplateColumn.CellTemplate> 
       </sdk:DataGridTemplateColumn> 
      </sdk:DataGrid.Columns> 
     </sdk:DataGrid> 
    </Grid> 
</UserControl> 

in .cs code 



using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Net; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Animation; 
using System.Windows.Shapes; 
using System.Collections.ObjectModel; 
using System.ComponentModel; 

namespace SLGridImage 
{ 
    public partial class MainPage : UserControl 
    { 
     private MarksViewModel model = new MarksViewModel(); 
     public MainPage() 
     { 
      InitializeComponent(); 
      this.DataContext = model; 

     } 

     private void myButton_Click(object sender, RoutedEventArgs e) 
     { 

     } 



    } 

    public class MarksViewModel : INotifyPropertyChanged 
    { 

     public MarksViewModel() 
     { 

      markCollection.Add(new Mark() { Name = "ABC", Marks = 23, Level = 0 }); 
      markCollection.Add(new Mark() { Name = "XYZ", Marks = 67, Level = 1 }); 
      markCollection.Add(new Mark() { Name = "YU", Marks = 56, Level = 0 }); 
      markCollection.Add(new Mark() { Name = "AAA", Marks = 89, Level = 1 }); 

     } 


     private ObservableCollection<Mark> markCollection = new ObservableCollection<Mark>(); 
     public ObservableCollection<Mark> MarkCollection 
     { 
      get { return this.markCollection; } 
      set 
      { 
       this.markCollection = value; 
       OnPropertyChanged("MarkCollection"); 
      } 
     } 


     public event PropertyChangedEventHandler PropertyChanged; 

     public void OnPropertyChanged(string propName) 
     { 
      if (PropertyChanged != null) 
       this.PropertyChanged(this, new PropertyChangedEventArgs(propName)); 
     } 

    } 

    public class Mark 
    { 
     public string Name { get; set; } 
     public int Marks { get; set; } 
     public int Level { get; set; } 
    } 

    public class LevelToVisibilityConverter : System.Windows.Data.IValueConverter 
    { 
     #region IValueConverter Members 

     public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      Visibility isVisible = Visibility.Collapsed; 
      if ((value == null)) 
       return isVisible; 
      int condition = (int)value; 
      isVisible = condition == 1 ? Visibility.Visible : Visibility.Collapsed; 
      return isVisible; 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      throw new NotImplementedException(); 
     } 

     #endregion 
    } 


} 

입니다

에 결합하는 결합

답변

2

사용 요소 이미지의 Visibility 속성 :

<Button x:Name="myButton" Visibility={Binding Visibility, ElementName=imgMarks} Click="myButton_Click" > 

편집 : 난 그냥 XAML을 검토하고 이미지가 버튼의 컨텐츠 것을 깨달았다 -이 라인을 이동하지 않는 이유 : 그것을하는 대신 버튼까지

Visibility="{Binding Level, Converter={StaticResource LevelToVisibility}}" 

을 이미지에?

+0

thanks slugster – happysmile

관련 문제