Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF: Text.IsEmpty / 6 сообщений из 6, страница 1 из 1
30.04.2016, 20:09
    #39228070
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF: Text.IsEmpty
Код: xml
1.
2.
        <TextBox x:Name="qqq" />
        <TextBlock Text="{Binding ElementName=qqq, Path=Text.IsEmpty}" />

Это работает. А почему? Разве что в какой-то из библиотек WPF, которые подключаются в стандартном наборе, есть метод расширения для String, но ObjectBrowser-ом не нашел...
...
Рейтинг: 0 / 0
01.05.2016, 18:19
    #39228231
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF: Text.IsEmpty
Работает, потому, что Path - это DependencyProperty, если бы Text был обычным свойством, нихера бы конечно не заработало.
Для статических свойств есть x:Static
...
Рейтинг: 0 / 0
01.05.2016, 18:19
    #39228232
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF: Text.IsEmpty
Roman Mejtes, не Path, а TextBox.Text всмысле
...
Рейтинг: 0 / 0
01.05.2016, 23:31
    #39228294
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF: Text.IsEmpty
А чье это определение (IsEmpty)? Движка DP? Работает ли это для каких-то еще типов?
...
Рейтинг: 0 / 0
02.05.2016, 10:44
    #39228334
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF: Text.IsEmpty
Shocker.ProА чье это определение (IsEmpty)? Движка DP? Работает ли это для каких-то еще типов?
В общем повникал маленько и вот что понял: String это класс наследующий IEnumerable, то есть перечисляемый, а значит, это по сути своей коллекция. Для каждой коллекции в WPF создается ICollectionView представление в результате связывания мы получаем класс (internal) EnumerableCollectionView, который оборачивает нашу строку, как и в случаи с ItemsControl'ом и свойством ItemsSource
Магия WPF безжалостна и беспощадна, вот тебе еще набор свойств к которым можно забиндиться, ни чего особенного там нет
Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
<Window x:Class="WpfApplication17.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" SizeToContent="WidthAndHeight">
    <Grid >
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <TextBox x:Name="qqq" Grid.Row="0" Margin="5"/>
        <TextBlock Grid.Row="1" Margin="5">
            <TextBlock.Inlines>
                <Run Text="NeedsRefresh:"/> 
                <Run Text="{Binding ElementName=qqq, Path=Text.NeedsRefresh, Mode=OneWay}"/> 
                <LineBreak/>
                <Run Text="IsEmpty:"/>
                <Run Text="{Binding ElementName=qqq, Path=Text.IsEmpty, Mode=OneWay}"/>
                <LineBreak/>
                <Run Text="Count:"/>
                <Run Text="{Binding ElementName=qqq, Path=Text.Count, Mode=OneWay}"/>
                <LineBreak/>
                <Run Text="Culture:"/>
                <Run Text="{Binding ElementName=qqq, Path=Text.Culture, Mode=OneWay}"/>
                <LineBreak/>
                <Run Text="CanFilter:"/>
                <Run Text="{Binding ElementName=qqq, Path=Text.CanFilter, Mode=OneWay}"/>
                <LineBreak/>
                <Run Text="Filter:"/>
                <Run Text="{Binding ElementName=qqq, Path=Text.Filter, Mode=OneWay}"/>
                <LineBreak/>
                <Run Text="CanSort:"/>
                <Run Text="{Binding ElementName=qqq, Path=Text.CanSort, Mode=OneWay}"/>
                <LineBreak/>
                <Run Text="SortDescriptions:"/>
                <Run Text="{Binding ElementName=qqq, Path=Text.SortDescriptions, Mode=OneWay}"/>
                <LineBreak/>
                <Run Text="CanGroup:"/>
                <Run Text="{Binding ElementName=qqq, Path=Text.CanGroup, Mode=OneWay}"/>
                <LineBreak/>
                <Run Text="Groups:"/>
                <Run Text="{Binding ElementName=qqq, Path=Text.Groups, Mode=OneWay}"/>
                <LineBreak/>
                <Run Text="GroupDescriptions:"/>
                <Run Text="{Binding ElementName=qqq, Path=Text.GroupDescriptions, Mode=OneWay}"/>
                <LineBreak/>
                <Run Text="CurrentPosition:"/>
                <Run Text="{Binding ElementName=qqq, Path=Text.CurrentPosition, Mode=OneWay}"/>
                <LineBreak/>
                <Run Text="CurrentItem:"/>
                <Run Text="{Binding ElementName=qqq, Path=Text.CurrentItem, Mode=OneWay}"/>
                <LineBreak/>
                <Run Text="IsCurrentAfterLast:"/>
                <Run Text="{Binding ElementName=qqq, Path=Text.IsCurrentAfterLast, Mode=OneWay}"/>
                <LineBreak/>
                <Run Text="IsCurrentBeforeFirst:"/>
                <Run Text="{Binding ElementName=qqq, Path=Text.IsCurrentBeforeFirst, Mode=OneWay}"/>
                <LineBreak/>

            </TextBlock.Inlines>
        </TextBlock>
    </Grid>
</Window>
...
Рейтинг: 0 / 0
03.05.2016, 00:17
    #39228505
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF: Text.IsEmpty
Спасибо за исследование, очень интересно.

ЗЫ: Ответишь? 19115305
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF: Text.IsEmpty / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]