0

Xaml:

<Grid>
        <StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center">
            <TextBlock FontSize="30" Text="{Binding ElementName=listView, Path=SelectedValue}" FontFamily="Rubik" Foreground="Black" Background="Pink"/>
            <ListView Margin="0,20" x:Name="listView" SelectionMode="Single">
                <ListViewItem>
                    <TextBlock Text="YES" FontSize="30" FontFamily="Rubik"/>
                </ListViewItem>
                <ListViewItem>
                    <TextBlock Text="NO" FontSize="30" FontFamily="Rubik"/>
                </ListViewItem>
            </ListView>
        </StackPanel>
    </Grid>

Xaml.cs: Пустая, ничего не добавлял

введите сюда описание изображения

gw gw
  • 95
  • 6
  • Если вы создадите класс, допустим class Test { public string Name {get;} = "Имя"; }, потом создадите этот класс var test = new Test(); и выведите на экран его, допустим Console.WriteLine(test);, что увидите на экране? Будет там "Имя" или нечто другое? Ответ естественно - нечто другое, а чтоб вывести на экран имя, нам надо написать Console.WriteLine(test.Name);. В C#, если вы что либо отображаете как строку, то это что-то будет преобразовано через .ToString() метод в нечто, что прописано в этом классе. Также и в XAML, у вас есть класс ListViewItem, внутри которого класс TextBlock. – EvgeniyZ Dec 11 '22 at 18:49
  • Хотите нормальный вывод, делайте значит данные без каких либо излишеств, например <ListView.Items><sys:String>YES</sys:String><sys:String>NO</sys:String></ListView.Items>, где sys вам подскажет как подключить сама студия, у меня лично это xmlns:sys="clr-namespace:System;assembly=netstandard". – EvgeniyZ Dec 11 '22 at 18:51
  • @EvgeniyZ а в чем собсна прикол использовать sys? Если допустим я буду украшать текст в Border и во всякие контейнеры, то как – gw gw Dec 11 '22 at 18:55
  • "Прикол" в том, что у вас данные сразу в формате String, а не в new ListViewItem(new TextBlock() { Text = "..." }) (классы написал от балды). Другими словами, в Items у вас будет string [] { "YES", "NO" }, простой массив строк, не более. Как сделать вид - для этого существует ItemTemplate, который и задает вид каждому элементу, например: <ListView.ItemTemplate><DataTemplate><TextBlock FontSize="30" FontFamily="Rubik" Text="{Binding}"/></DataTemplate></ListView.ItemTemplate>. – EvgeniyZ Dec 11 '22 at 19:02
  • В вашем UPD вы до сих пор используете ListViewItem, внимательней смотрите на код, который я вам даю, повторять по сто раз одно и тоже я не собираюсь. – EvgeniyZ Dec 11 '22 at 19:03
  • @EvgeniyZ простите( я не хотел, оно само – gw gw Dec 11 '22 at 19:07
  • @EvgeniyZ а если в DataTemplate есть много-много всякого и нужно вывести некоторые элементы, мне использовать SelectedItem? – gw gw Dec 11 '22 at 19:11
  • Не понял вопроса. DataTemplate - это вид объектов, как вы там собрались что либо выводить? Или речь идет про вид для конкретного объекта? В таком случае делится все на разные классы и делается несколько DataTemplate с указанием типа, тогда XAML сам будет подставлять нужный вид. И тут мы с вами понимаем, что данные в XAML это плохо, ваши YES/NO должны быть в коде (если конечно это не чисто дизайн). – EvgeniyZ Dec 11 '22 at 19:18
  • @EvgeniyZ могу здесь описать или создать вопрос? – gw gw Dec 11 '22 at 19:23
  • Что конкретно нужно? – EvgeniyZ Dec 11 '22 at 19:49
  • @EvgeniyZ есть ItemsControl(который показывает картинку и название) и ListBox(с данными). Необходимо при выборе элемента из ListBox вывести в ItemsControl, я как бы прописал бинд, но ничего не выводит, хотя везде DataTemplate и как я понял, с SelectedItem не должно быть проблем. После пытался програмно(насильно) воткнуть, и увидел, что DataRowView низя в Collection.IEnumerable. В итоге поменял на ту стринг, но вывод ссылка на объект..... – gw gw Dec 11 '22 at 19:58
  • Эм... А как это все связано друг с другом? ItemsControl - это аналог ListBox, только без выделения, он у вас как говорите "показывает картинку и название", ок, а зачем для показа этого, использовать элемент, предназначенный для отображения коллекции? Предположу, что вам нужно это. – EvgeniyZ Dec 11 '22 at 20:03
  • @EvgeniyZ это кнч круто, но указывать у каждого элемента бинд....хотелось бы с помощью бинда ItemsSource решить проблему – gw gw Dec 11 '22 at 20:08
  • Значит вы делаете что-то не то, раз вам надо каждому элементу задавать бинд. В программировании повторение - это первый признак того, что идет что-то не так. Я не могу вам слепо советовать что либо, все нужные примеры дал, больше, как бы, извиняйте. – EvgeniyZ Dec 11 '22 at 20:13
  • @EvgeniyZ понял, принял, спасибо – gw gw Dec 11 '22 at 20:14

1 Answers1

1
<Grid>
        <StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center">
            <TextBlock FontSize="30" Text="{Binding ElementName=listView, Path=SelectedItem}" FontFamily="Rubik" Foreground="Black" Background="Pink"/>
            <ListView Margin="0,20" x:Name="listView" SelectionMode="Single">
                <ListView.Items>
                    <sys:String>YES</sys:String>
                    <sys:String>NO</sys:String>
                </ListView.Items>
            </ListView>
        </StackPanel>
    </Grid>

введите сюда описание изображения

gw gw
  • 95
  • 6