С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
SinnerMan
2 / 2 / 0
Регистрация: 16.10.2011
Сообщений: 85
1

Unifrom grid

31.07.2015, 21:41. Просмотров 263. Ответов 2
Метки нет (Все метки)

Добрый день, у меня есть UnifromGrid в средине которой расположены другие grid, каждый такой grid содержит кнопку с контентом и полем. Я хочу после нажатия на кнопку в grid изменять label в том же grid, но каким образом можно узнать в каком grid было нажатие, если нет никакого id.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
namespace WpfApplication107
{
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = new Shop();
    }
}
 
public class StructOfBox
{
    public string Size { get; set; }
    public string Amount { get; set; }
    public ICommand ChangeSize { get; set; }
}
 
public class Shop
{
    public Shop()
    {
        Items = new ObservableCollection<StructOfBox>();
        Items.Add(new StructOfBox { Amount = "0", Size = "S", ChangeSize = new RelayCommand(() => ChangeAmount()) });
        Items.Add(new StructOfBox { Amount = "0", Size = "M", ChangeSize = new RelayCommand(() => ChangeAmount()) });
        Items.Add(new StructOfBox { Amount = "0", Size = "L", ChangeSize = new RelayCommand(() => ChangeAmount()) });
        Items.Add(new StructOfBox { Amount = "0", Size = "XL", ChangeSize = new RelayCommand(() => ChangeAmount()) });
    }
 
    public ObservableCollection<StructOfBox> Items { get; set; }
    public void ChangeAmount()
    {
        // what box?
        Debug.WriteLine("pressed");
    }
}
}
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<Grid>
    <ItemsControl ItemsSource="{Binding Items}">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <UniformGrid Columns="2" Rows="2"></UniformGrid>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Border BorderThickness="2" BorderBrush="Green">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition></RowDefinition>
                            <RowDefinition></RowDefinition>
                            <RowDefinition></RowDefinition>
                        </Grid.RowDefinitions>
                        <Button Content="{Binding Size}" Command="{Binding ChangeSize}"></Button>
                        <Label Content="{Binding Amount}" Height="25" Grid.Row="2"></Label>
                    </Grid>
                </Border>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</Grid>
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2015, 21:41
Ответы с готовыми решениями:

Возможно ли задать в XAML число строк и столбцов Grid сразу, без исп <Grid.ColumnDefinitions> и <Grid.RowDefinnitions>?
Возможно ли задать в XAML число строк и столбцов Grid сразу, без исп...

В стиле для элемента Grid использовать другой Grid
Пытаюсь создать вот такой стиль для Grid &lt;Style...

Привязать ширину столбцов Grid к другому Grid
Здравствуйте, форумчане!) Помогите, пожалуйста, в решении вопроса. Есть два...

Сброс параметров Grid.Row Grid.Column
Решил попробовать Catel и обнаружил что при вводе данного свойства он...

grid
здравствуйте, уважаемые господа ) подскажите плз, есть ли в природе...

2
Demo_Dem
4 / 4 / 1
Регистрация: 01.09.2014
Сообщений: 54
01.08.2015, 01:01 2
Есть такая штука как CommandParameter http://stackoverflow.com/questions/1...m-other-object
Собственно, передавайте туда какой нибудь ID Grid'а.
0
kenny69
burning1ife
1413 / 1235 / 292
Регистрация: 21.09.2008
Сообщений: 3,409
Записей в блоге: 9
01.08.2015, 12:22 3
1.Создать одну команду на весь класс Shop, а не на каждый элемент.
C#
1
public ICommand ChangeSize { get; set; }
2.К StructOfBox добавить поле Id
3. Передать Id параметром в команду (не проверял):
XML
1
 <Button Content="{Binding Size}" Command="{Binding ChangeSize, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" CommandParameter="{Binding Id}"></Button>
4. Изменить элемент с переданным Id
C#
1
2
3
4
5
6
myCommand = new RelayCommand<int>((id) => ChangeSize(id));
 
private void ChangeSize(int id)
{
   Items.First(x=>x.Id==id).Property11 = "Changed";
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.08.2015, 12:22

LayoutTransform vs Grid
Имеем: Grid, Button и стиль кнопки, в котором применяется LayoutTransform. ...

Выровнять Grid
У меня есть некая информация,в данном случае о фильме,мне надо представить ее в...

Прокрутка Grid
Здравствуйте! Есть ScrollViewer, внутри его Grid состоящий из n-го...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru