@BashkaMen
C# программист

User Control нужно перебрасывать свойства?

Здравствуйте, возникло 2 вопроса по UserControl.

Вот у меня есть контрол, я ему добавил пару DependencyProperty и сделал некий EditableTextBlock при двойном клике меняется свойство IsEditMode и прячется\показывается TextBox, все работает я получил то что хотел, но кроме этих свойств я хочу менять ещё некие свойства

1) Не ужели так нужно везде пробрасывать все свойства? в примере только шрифт, но ведь может быть много чего.
<UserControl
    x:Class="SlideMenu.Controls.EditableTextBlock"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:c="clr-namespace:CalcBinding;assembly=CalcBinding"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="clr-namespace:SlideMenu.Controls"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    x:Name="uc"
    d:DesignHeight="25"
    d:DesignWidth="100"
    mc:Ignorable="d">
    <Grid>
        <TextBlock
            FontFamily="{Binding ElementName=uc, Path=FontFamily}"
            FontSize="{Binding ElementName=uc, Path=FontSize}"
            FontWeight="{Binding ElementName=uc, Path=FontWeight}"
            MouseDown="TextBlock_MouseDown"
            Text="{c:Binding ElementName=uc,
                             Path=Text}"
            TextAlignment="{Binding ElementName=uc, Path=TextAlignment}" />
        <TextBox
            FontFamily="{Binding ElementName=uc, Path=FontFamily}"
            FontSize="{Binding ElementName=uc, Path=FontSize}"
            FontWeight="{Binding ElementName=uc, Path=FontWeight}"
            MouseDoubleClick="TextBox_MouseDoubleClick"
            Text="{c:Binding ElementName=uc,
                             Path=Text}"
            TextAlignment="{Binding ElementName=uc, Path=TextAlignment}"
            Visibility="{c:Binding ElementName=uc,
                                   Path=IsEditMode}" />
    </Grid>
</UserControl>


2) У UserControl есть свойство Content которое мешает просто висит и если я сделаю так
<Controls:EditableTextBlock Grid.Column="1" Text="ASDHAJSHDGA" HorizontalAlignment="Left"  Width="108">
            qwhuejghhqwe
        </Controls:EditableTextBlock>

весь мой контрол просто замениться на Content, как мне убрать эту возможность? и как мне использовать этот Content, когда я пытался его биндить в ContentControl или ContentPresenter я получал ошибки, да и вообще студия вылетает.
  • Вопрос задан
  • 242 просмотра
Решения вопроса 1
@LootKeeper
1) Да, но это можно упростить, используя DataContext, через ViewModel можно забиндить все что вам нужно, без Dependency Property
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы