PDA

View Full Version : يوزر كنترل و تعريف پروپرتي براي ان در wpf



saed2006
شنبه 16 مهر 1390, 12:57 عصر
در برنامه نويسي ويندوزي وقتي براي يوزر كنترل يه Peroperty رو عمومي تعريف كنيم اسم اون ميره توي ليست peroperty ةاي يوزر كنترل
ايا براي wpf ةم همچين اتفاقي ميافته؟

مهدی فرزاد
شنبه 16 مهر 1390, 13:00 عصر
سلام
بله این اتفاق می افته

saed2006
شنبه 16 مهر 1390, 13:19 عصر
چجوري ميشه اين كار رو كرد؟

مهدی فرزاد
شنبه 16 مهر 1390, 13:25 عصر
اینم هم لینک
http://www.codeproject.com/KB/WPF/UserControl.aspx
http://geekswithblogs.net/thibbard/archive/2008/04/22/wpf-custom-control-dependency-property-gotcha.aspx

Amir Oveisi
شنبه 16 مهر 1390, 13:25 عصر
کار خاصی نیاز نیست انجام بدید، مثل Wiindows App هست.
در ضمن قبل از ایجاد تاپیک، خودتون اول تست کنید ببینید به چه نتیجه ای می رسید، بعد کاری رو که انجام دادید و نتیجه ای که گرفتید رو به همراه سوال یا مشکلی که براتون پیش اومده، تو تاپیک مطرح کنید.

موفق باشید

saed2006
شنبه 16 مهر 1390, 13:32 عصر
من توي كد يوزر كنترل پروپرتي تعريف كردم اما توي ليست نمياد

public static readonly DependencyProperty DataProperty =
DependencyProperty.Register("Data",
typeof(List<Control>),
typeof(Control),
new FrameworkPropertyMetadata(new List<Control>()));

public List<Control> Data
{
get { return (List<Control>)GetValue(DataProperty); }
set { SetValue(DataProperty, value); }
}

public static readonly DependencyProperty ImageProperty =
DependencyProperty.Register("Image",
typeof(Image),
typeof(Image),
new FrameworkPropertyMetadata(new Image()));

public Image Image
{
get { return (Image)GetValue(DataProperty); }
set { SetValue(DataProperty, value); }
}









<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="NewSobhanDisgner.UcMultiButon"
x:Name="UserControl"
d:DesignWidth="51.333" d:DesignHeight="36">

<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="33.984"/>
<RowDefinition/>
</Grid.RowDefinitions>

<Grid x:Name="LayoutRoot" Margin="0">
<Button Margin="0,0,14,0" Foreground="{x:Null}" BorderBrush="#FF838383"/>
<Border BorderBrush="Gray" BorderThickness="1" HorizontalAlignment="Right" Width="12.833" CornerRadius="2" RenderTransformOrigin="0.5,0.5">
<Border.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform Angle="180"/>
<TranslateTransform/>
</TransformGroup>
</Border.RenderTransform>
<Border.Background>
<ImageBrush ImageSource="/NewSobhanDisgner;component/Resource/Images/Icons/ArrowIcon.png"/>
</Border.Background>
</Border>
</Grid>
<ContentPresenter Margin="0" Grid.Row="1" />
</Grid>
</UserControl>

مهدی فرزاد
یک شنبه 17 مهر 1390, 09:11 صبح
اگر از محیط Blend استفاده میکنی توی قسمت Miscellaneous اضافه میشه و اگر از محیط vs استفاده می کنید در قسمت Other میتونید اون رو ببینید

saed2006
یک شنبه 17 مهر 1390, 10:15 صبح
اگر از محیط Blend استفاده میکنی توی قسمت Miscellaneous اضافه میشه و اگر از محیط vs استفاده می کنید در قسمت Other میتونید اون رو ببینید

با اين كدي كه گذاشتم نبايد توي ليست اضافه بشه؟
نميشه

مهدی فرزاد
یک شنبه 17 مهر 1390, 10:31 صبح
اگر دقت کنید لیست Property ها دسته بندی شده
توی همون دسته هایی که گفتم اضافه میشه