نوشته شده توسط
MMRavari
با سلام
من میخوام درون برنامه برای نمایش اطلاعات خاصی از Rectangle به صورت زیر استفاده کردم که در فایل پیوست ضمیمه شده
برای راحتی کار میخواستم اون رو در یک ResourceDictioneary تعریف کنم که از دستور Rectangle به صورت زیر استفاده کردم
مشکلی که به وجود اومده اینه که نمیتونم اون رو بصورت زیر تعریف تا استایل مورد نظر رو براش تعریف کنم
چه جوری میشه اینکار رو کرد
سلام
پروپرتی Template را فقط برای کلاس هایی از نوع Control (و فرزندانش) میتونین تعریف کنین چون این پروپرتی در کلاس Control تعریف شد (مثل Grid و Button یا هر شی ای از نوع کنترل) .
کلاس Rectangle ، از نوع Control نیست . برای همین نمیتونین پروپرتی Template را براش تعریف کنید .
ضمن اینکه اگه هدف تون از تعریف Rectangle اینه که ظاهر کنترل هاتون را مدیریت کنین و ظاهرشون را تغییر بدین ، برای این کار بهتر هه از کلاس های Decorator استفاده کنین که برای تغییر ظاهر و افکت گذاری روی المنت های فرزند طراحی شده .
به عبارت دیگه ، بجای Rectangle ، بهتر هه از کلاس Border (که از نوع Decorator هست) استفاده کنین .
نوشته شده توسط
MMRavari
همچنین اگر بخوام اون سه تا تکست باکس (سر تیتر، نمایش اطلاعات 1 و مشخصات) رو توری تعریف کنم که بتونم فونت، سایز، رنگ و ... رو در زمان استفاده درون برنامه تعریف کنم لازمه از استایلی جداگانه استفاده بشه یا میشه درون اون این استایل اونها رو هم تعریف کرد ممنون میشم اگه نحوه تعریف رو معین کنید
اگر آموزشی در این رابطه وجود داره معرفی تا بتونم بخونم
ممنون میشم راهنمایی کنید.
اول اینکه اگه میخواین پشت اون 3 تا متن ("سر تیتر"، "نمایش اطلاعات" و "مشخصات") ، یه پشت زمینه قرار بدین یا دورش یک حاشیه (Border) رسم کنین یا مخصوصا اینکه با تغییر یک پروپرتی ، مشخصاتِ این 3 متن تغییر کنن ، این 3 متن را درون یک کنترل تعریف کنین (به عنوان content ئه اون کنترل یا به عنوان child کنترل والد) .
این طور اصولی نیست که Rectangle را جدا تعریف کنید و اون 3 تا متن (label) را هم به عنوان خواهر و برادرِ اون Rectangle تعریف کنید . ضمنا بجای label ، میتونید از TextBlock هم استفاده کنید (اگه به خصوصیاتِ کنترل از label بودن نیازی ندارید و صرفا میخواید متن ای را به نمایش در بیارید) :
<Border Width="300" Height="200" CornerRadius="35" Background="#FFF3F4F5">
<Border.Child>
<GroupItem FontFamily="B Naznin" FontSize="32">
<Grid Height="200" >
<Grid.Resources>
<Style TargetType="TextBlock">
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
</Grid.Resources>
<TextBlock Margin="0,-50, 0, 0" >سر تیتر</TextBlock>
<TextBlock FontSize="24" Margin="120,100, 0, 0" >نمایش اطلاعات </TextBlock>
<TextBlock FontSize="24" Margin="-180,100, 0, 0" >مشخصات</TextBlock>
</Grid>
</GroupItem>
</Border.Child>
</Border>
البته میتونین بجای کد بالا ، یه کنترلی تعریف کنید که برای اون کنترل ، یه template تعریف کنید و احتمالا نیازش به کد ، کمتر از این میشه یا هر کنترل و ساختار دیگه ای را که مناسب دیدین طبق نیازتون تعریف کنین .