Xaml WP8.1 Style

0

Witam

Dlaczego przycisk z poniżej zdefiniowanego stylu, poprawnie przejmuje wartości dla wysokości i szerokości, ale już 'command' i 'commandparameter' nie?
Jeśli to samo zapisze bezpośrednio w definicji przycisku, wszystko działa jak należy.
ButtonPressed jest typu RelayCommand (MVVM Light), aplikacja WP8.1 (nie Silverlight)

         
<Style TargetType="Button">
          <Setter Property="Width" Value="100"/>
          <Setter Property="Height" Value="100"/>
          <Setter Property="Command" Value="{Binding ButtonPressed, Mode=OneWay}"/>
          <Setter Property="CommandParameter" Value="{Binding Content, RelativeSource={RelativeSource Mode=Self}}"/>
</Style>
0

W zwykłym WPFie i zamiast RelayCommand dałem ICommand, to działa jak należy.

0
dam1an napisał(a):

W zwykłym WPFie i zamiast RelayCommand dałem ICommand, to działa jak należy.

Niestety dalej nie działa.

0

To pokaż więcej kodu.

0
<Style TargetType="Button">
          <Setter Property="Width" Value="100"/>
          <Setter Property="Height" Value="100"/>
          <Setter Property="Command" Value="{Binding ButtonPressed, Mode=OneWay}"/>
          <Setter Property="CommandParameter" Value="{Binding Content, RelativeSource={RelativeSource Mode=Self}}"/>
</Style>

Tak nie działa:

<Button Content="X" /> //przypisze rozmiary, reszta nie działa

Muszę przy każdym przycisku przypisywać Command i CommandParameter

<Button Content="X" Command="{Binding ButtonPressed, Mode=OneWay}" CommandParameter="{Binding Content, RelativeSource={RelativeSource Mode=Self}}"/>
0

Nic więcej kodu nie pokazałeś.
Widzi to ViewModel? Jak dasz <Setter Property="Height" Value="{Binding Height}"/> i w ViewModelu odpowiednią propertkę to się ustawi?

0
dam1an napisał(a):

Nic więcej kodu nie pokazałeś.
Widzi to ViewModel? Jak dasz <Setter Property="Height" Value="{Binding Height}"/> i w ViewModelu odpowiednią propertkę to się ustawi?

Nie widzi. Jak dasz tak:
<Button Height="{Binding Height}"/> to jest ok.

Może to z powodu MvvmLight albo jakieś ograniczenie wp8.1
Api Wp8.1 nie ma dostępu np do schowka :)

0

A cały button w czym siedzi?

0
dam1an napisał(a):

A cały button w czym siedzi?

Page->Grid->Button
DataContext jest ustawiony na MainViewModel. I wszystko ładnie działa, poza tym setterami.
Chyba się tego nie ustawić w ten sposób. Nawet jak próbuje ustawić przez properties
to binding nie jest aktywny
user image

0

Page->Grid->Button

Na pewno nie ma tam jakichś templatów po drodzę?
A DataContext jak ustawiasz?
Pewnie pomogło by gdybyś wrzucił cały plik xaml.

0
<Page
    x:Class="Temp.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Temp"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    DataContext="{Binding Main, Mode=OneWay, Source={StaticResource Locator}}">

    <Page.Resources>
        <Style TargetType="Button">
            <Setter Property="MinWidth" Value="70"/>
            <Setter Property="Width" Value="70"/>
            <Setter Property="MinHeight" Value="70"/>
            <Setter Property="Height" Value="89"/>
            <Setter Property="HorizontalAlignment" Value="Center"/>
            <Setter Property="VerticalAlignment" Value="Center"/>
            <!--<Setter Property="Command" Value="{Binding ButtonPressed, Mode=OneWay}"/>
            <Setter Property="CommandParameter" Value="{Binding Content, RelativeSource={RelativeSource Mode=Self}}"/>-->
        </Style>
    </Page.Resources>

    <Grid x:Name="LayoutRoot" Background="{StaticResource PhoneBackgroundBrush}">

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>


        <Button Content="X" Grid.Column="0" Grid.Row="0" Command="{Binding ButtonPressed, Mode=OneWay}" CommandParameter="X"/>
        <!--<Button Content="X" Grid.Column="0" Grid.Row="0"/>-->

    </Grid>
</Page>

1 użytkowników online, w tym zalogowanych: 0, gości: 1