none
C# WPF DataGrid, Скрыть кнопку по нажатию и отобразить вместо неё TextBox RRS feed

  • Вопрос

  • Всем доброго времени суток, проблема в следующем. Имеется столбец содержащий кнопку и скрытый текст бокс:

    <DataGridTemplateColumn Header="Скидка" 
                                                MinWidth="40"
                                                x:Name="Discount">
                            <DataGridTemplateColumn.CellTemplate  >
                                <DataTemplate >
                                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
                                        <Button Name="DiscountButton"
                                                Style="{DynamicResource MetroCircleButtonStyle}"
                                                Content="+"  
                                                Click="DiscountButton_Click" 
                                                Width="40" 
                                                Height="40" 
                                                Padding="0"
                                                BorderThickness="0"
                                                Background="#FF18A512"
                                                Foreground="White">
                                        </Button>
                                        <TextBlock x:Name="block" Text="Ghbdtn" Visibility="Collapsed"/>
                                    </StackPanel>
                                    <DataTemplate.Triggers>
                                        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,
                                      AncestorType={x:Type DataGridRow}},
                                      Path=IsNewItem}" Value="True">
                                            <Setter TargetName="DiscountButton" Property="Visibility" Value="Hidden"></Setter>
                                        </DataTrigger>
                                    </DataTemplate.Triggers>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>

    Необходимо по клику скрыть кнопку и отобразить вместо неё текстовое поле. Как мне сделать это ТОЛЬКО в той строке, в которой была нажата кнопка? 

    Discount.Visibility = Visibility.Collapsed; скрывает ВСЕ кнопки в каждой строке

     

Ответы

  • В итоге сделал через триггеры, оставлю тут, вдруг кому пригодится:

    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
                                        <Button Name="DiscountButton"
                                                Style="{DynamicResource MetroCircleButtonStyle}"
                                                Content="+"  
                                                Click="DiscountButton_Click"
                                                Width="40" 
                                                Height="40" 
                                                Padding="0"
                                                BorderThickness="0"
                                                Background="#FF18A512"
                                                Foreground="White">
                                            <Button.Triggers>
                                                <EventTrigger RoutedEvent="Button.Click">
                                                    <BeginStoryboard>
                                                        <Storyboard>
                                                            <ObjectAnimationUsingKeyFrames Storyboard.Target="{x:Reference DiscountButton}"
                                                       Storyboard.TargetProperty="Visibility">
                                                                <DiscreteObjectKeyFrame KeyTime="0:0:0"
                                                    Value="{x:Static Visibility.Collapsed}"/>
                                                            </ObjectAnimationUsingKeyFrames>
                                                            <ObjectAnimationUsingKeyFrames Storyboard.Target="{x:Reference block}"
                                                       Storyboard.TargetProperty="Visibility">
                                                                <DiscreteObjectKeyFrame KeyTime="0:0:0"
                                                    Value="{x:Static Visibility.Visible}"/>
                                                            </ObjectAnimationUsingKeyFrames>
                                                        </Storyboard>
                                                    </BeginStoryboard>
                                                </EventTrigger>
                                            </Button.Triggers>
                                        </Button>
                                        <TextBlock x:Name="block" Text="{Binding Discount}"  Visibility="Collapsed"/>
                                    </StackPanel>

    • Помечено в качестве ответа Tartarianec 7 июня 2017 г. 7:43

Все ответы

  • Возможно нужно программно изменять свойство Opasity коэффициент непрозрачности для данных элементов.

    Фоновое изображение

  • В итоге сделал через триггеры, оставлю тут, вдруг кому пригодится:

    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
                                        <Button Name="DiscountButton"
                                                Style="{DynamicResource MetroCircleButtonStyle}"
                                                Content="+"  
                                                Click="DiscountButton_Click"
                                                Width="40" 
                                                Height="40" 
                                                Padding="0"
                                                BorderThickness="0"
                                                Background="#FF18A512"
                                                Foreground="White">
                                            <Button.Triggers>
                                                <EventTrigger RoutedEvent="Button.Click">
                                                    <BeginStoryboard>
                                                        <Storyboard>
                                                            <ObjectAnimationUsingKeyFrames Storyboard.Target="{x:Reference DiscountButton}"
                                                       Storyboard.TargetProperty="Visibility">
                                                                <DiscreteObjectKeyFrame KeyTime="0:0:0"
                                                    Value="{x:Static Visibility.Collapsed}"/>
                                                            </ObjectAnimationUsingKeyFrames>
                                                            <ObjectAnimationUsingKeyFrames Storyboard.Target="{x:Reference block}"
                                                       Storyboard.TargetProperty="Visibility">
                                                                <DiscreteObjectKeyFrame KeyTime="0:0:0"
                                                    Value="{x:Static Visibility.Visible}"/>
                                                            </ObjectAnimationUsingKeyFrames>
                                                        </Storyboard>
                                                    </BeginStoryboard>
                                                </EventTrigger>
                                            </Button.Triggers>
                                        </Button>
                                        <TextBlock x:Name="block" Text="{Binding Discount}"  Visibility="Collapsed"/>
                                    </StackPanel>

    • Помечено в качестве ответа Tartarianec 7 июня 2017 г. 7:43