Я не могу получить дочерний элемент управления из ListBox в WPF, используя MVVM - PullRequest
0 голосов
/ 01 июля 2011

У меня серьезные проблемы.У меня есть список управления, в котором у меня есть много комбинированного списка.всякий раз, когда выберите значение в поле со списком, я должен сделать другие элементы управления как скрытые.Я использую MVVM Pattren.Я не могу получить дочерние элементы управления из элемента управления ListBox, но я могу получить элемент управления ListBox в viewmodel.Как я могу получить эти элементы управления в viewmodel?Является ли это возможным?Я использую фреймворк 4.0.Я показал код ниже, который пишите в поле зрения.

  <ListBox x:Name="lstItems" MaxHeight="300" FontSize="11" Margin="12,0,20,38" ItemsSource="{Binding Source={StaticResource listedView}, Path=myItemsSource, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}">
        <ListBox.ItemTemplate >
            <DataTemplate>
                <Border BorderBrush="Blue" Margin="0,4,0,4" BorderThickness="1" CornerRadius="5">
                    <StackPanel Orientation="Horizontal">
                        <Label Content="Show rules where:" Name="lblshowrules"></Label>
                        <ComboBox x:Name="cboShowRuleWhere" Height="20" Width="200"  ItemsSource="{Binding Source={StaticResource listedView}, Path=FilterRules}" DisplayMemberPath="RuleName"  SelectedValuePath="RuleId" SelectedValue="{Binding Source={StaticResource listedView}, Path=SelectedRuleName, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" ></ComboBox>
                        <Grid Height="29" HorizontalAlignment="Left" Name="grid1" VerticalAlignment="Top" Width="496" Grid.Row="1" Margin="0,0,0,0">
                            <ComboBox Height="21" HorizontalAlignment="Left" Margin="6,4,0,0" x:Name="cboRuleCondtion"  VerticalAlignment="Top" Width="212" />
                            <TextBox Height="20" HorizontalAlignment="Left" Margin="242,3,0,0" x:Name="txtValue" VerticalAlignment="Top" Width="245" Visibility="Hidden"/>
                            <ComboBox Height="21" HorizontalAlignment="Left" Margin="224,3,0,0" x:Name="cboValue" VerticalAlignment="Top" Width="205" Visibility="Hidden" />
                            <DatePicker Height="28" HorizontalAlignment="Left" Margin="242,-3,0,0" x:Name="dtpFromDate" VerticalAlignment="Top" Width="98" Visibility="Hidden" />
                            <DatePicker Height="31" HorizontalAlignment="Left" Margin="346,-3,0,0" x:Name="dtpToDate" VerticalAlignment="Top" Width="98" Visibility="Hidden"/>
                        </Grid>
                        <Button Name="cmdAddLevel" Padding="0" Margin="-1,1,0,-1" Width="75" Command ="{Binding Source={StaticResource listedView}, Path=AddLevelCommand, UpdateSourceTrigger=PropertyChanged}" BorderBrush="White" BorderThickness="1" Height="25" HorizontalContentAlignment="Center">
                            <StackPanel Orientation="Horizontal">
                                <Image Height="16" Width="16" HorizontalAlignment="Left" Margin="1,0,0,-1">
                                </Image>
                                <TextBlock Text="Add Level" FontWeight="Bold" Height="16" Width="70" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="8,2,0,-1" />
                            </StackPanel>
                        </Button>
                        <Label Name="lblDeleteLevel"  Margin="3,0,0,0" Width="75" TabIndex="7"  HorizontalAlignment="Left">
                            <Hyperlink >
                                <TextBlock Text="Delete Level" />
                            </Hyperlink>
                        </Label>
                    </StackPanel>
                </Border>
            </DataTemplate>
        </ListBox.ItemTemplate>
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Vertical" />
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
    </ListBox>

Пожалуйста, помогите мне.еще раз, я хочу знать, как получить дочерний контроль от родительского контроля ... Возможно ли это?

1 Ответ

0 голосов
/ 01 июля 2011

Используя шаблон MVVM, вы не должны ссылаться ни на один из элементов управления напрямую.В качестве альтернативы вы должны создать логическое свойство для вашей модели представления, которое решает, должны ли быть видны различные элементы управления.Затем привяжите свойство Visibility к элементам управления, которые вы хотите скрыть, к этому свойству с помощью конвертера.

См. Этот предыдущий раздел вопросов и ответов для получения дополнительной информации о конвертерах видимости: Link

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...