none
Cambir tooltip de boton mediante Style RRS feed

  • Pregunta

  • Hola, tengo un DataGrid que lo lleno con una ObservableCollection<T>, donde T tiene una propiedad IsAutomaticSell. Cada fila de la grilla muestra datos y la ultima columna "Acciones" tiene, en este caso 1 boton. Este boton tiene un tooltip y dependiendo el valor de la propiedad "IsAutomaticSell" (true/false), es el texto que debe llevar. Cuando hago click en el boton, cambio el valor de la propiedad por el contrario (si esta true, la pongo en false y viceversa). Lo que necesito es que cambie el texto del tooltip del boton pero no lo logro. A tener en cuenta que cada boton es independiente y depende del valor de la propiedad de cada objeto, no puedo crear una propiedad global y bindearla a todos los botones. Gracias de antemano

    <DataGridTextColumn Header="Code"
                        Binding="{Binding Code}" />
    <DataGridTemplateColumn Header="Actions"
    			Width="150">
    	<DataGridTemplateColumn.CellTemplate>
    		<DataTemplate>
    			<StackPanel Orientation="Horizontal"
    						HorizontalAlignment="Center">
    				<Button Command="{Binding DataContext.AutomaticSellCommand,
    						RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}"
    						CommandParameter="{Binding}"
    						Padding="10"
    						Margin="0,2,2,2">
    					<iconPacks:PackIconModern Kind="CurrencyDollar" />
    					<Button.Style>
    						<Style TargetType="{x:Type Button}"
    							   BasedOn="{StaticResource AccentedSquareButtonStyle}">
    							<Setter Property="ToolTip"
    									Value="DEFAULT_TOOLTIP" />
    							<Style.Triggers>
    								<DataTrigger Binding="{Binding IsAutomaticSell, UpdateSourceTrigger=PropertyChanged}"
    											 Value="True">
    									<Setter Property="ToolTip"
    											Value="NEW_TOOLTIP" />
    								</DataTrigger>
    							</Style.Triggers>
    						</Style>
    					</Button.Style>
    				</Button>
    			</StackPanel>
    		</DataTemplate>
    	</DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
    public ICommand AutomaticSellCommand => _automaticSellCommand ??
    						 (_automaticSellCommand = new RelayCommand<OrderStatusDataWrapper>(AutomaticSell));
    		
    private static void AutomaticSell(OrderStatusDataWrapper orderStatusData)
    {
    	orderStatusData.IsAutomaticSell = !orderStatusData.IsAutomaticSell;
    }


    sábado, 5 de mayo de 2018 22:54