Xaml WP8.1 Style

Odpowiedz Nowy wątek
2015-01-03 19:02
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>

Pozostało 580 znaków

2015-01-03 19:29
0

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

Pozostało 580 znaków

2015-01-03 20:24
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.

Pozostało 580 znaków

2015-01-03 20:29
0

To pokaż więcej kodu.

Pozostało 580 znaków

2015-01-03 20:36
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}}"/>
edytowany 1x, ostatnio: shifttab, 2015-01-03 20:54

Pozostało 580 znaków

2015-01-03 21:07
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?

Pozostało 580 znaków

2015-01-03 21:35
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 :)

Pozostało 580 znaków

2015-01-03 21:39
0

A cały button w czym siedzi?

Pozostało 580 znaków

2015-01-03 21:54
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

edytowany 1x, ostatnio: shifttab, 2015-01-03 22:18

Pozostało 580 znaków

2015-01-03 22:55
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.

Pozostało 580 znaków

2015-01-03 23:24
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>
 
Nie wiem czemu tak się dzieje, być może WP8 tak nie pozwala. Może ktoś inny będzie wiedział. - dam1an 2015-01-03 23:41
Ok, dzięki za pomoc - shifttab 2015-01-04 00:13

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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