PDA

View Full Version : عوض کردن صفحه در mahapps.metro



سیدسبحان
شنبه 28 شهریور 1394, 16:53 عصر
سلام دوستان عزیز
راستش من یه سوال داشتم راجع به mahapps.metro
ببین میخام وقتی صفحه اول هستم و روی دکمه گزارشات زده میشه، کنترل های موجود ، با انیمیشن خاصی مخفی بشن(انیمیشنش درست برعکس موقعی که ظاهر میشن باشه . یا شایدم اگه بهتر بشه که چه بهتر) و کنترلهای مربوط به گزارشات نمایش داده بشه.
چطوری افکت مخفی شدن رو بزارم برای کنترل هام؟ البته غیر از استفاده از tabitem

barnamenevisjavan
یک شنبه 29 شهریور 1394, 11:03 صبح
باید از ترانزیشن استفاده کنید از راهنمای خود MahApps استفاده کنید
http://mahapps.com/controls/transitioning-content-control.html

سیدسبحان
یک شنبه 29 شهریور 1394, 13:40 عصر
باید از ترانزیشن استفاده کنید از راهنمای خود MahApps استفاده کنید
http://mahapps.com/controls/transitioning-content-control.html

ممنون که وقت گذاشتی دوست عزیز
ولی این راهنمای سایتش اصلا هیچی توش ننوشتن!
یه مثال کاشکی میزد.

الان شما میشه بگی مثلا ،
اگه بخام با زدن روی دکمه 1 ، دکمه 2 بره به سمت چپ، کدش چطوری میشه؟

barnamenevisjavan
یک شنبه 29 شهریور 1394, 22:34 عصر
به عنوان مثال این xaml برنامه باشه
<layout:TransitioningContentControl x:Name="tcc"
HorizontalAlignment="Center"
Margin="30"
FontSize="18"
Content="Click buttons to change content" />


<Button x:Name="UpButton"
Content="Up"
Width="100"
Height="30"
Margin="10"
FontSize="14"/>
<Button x:Name="DownButton"
Content="Down"
Width="100"
Height="30"
Margin="10"
FontSize="14"/>


حالا اینجا ما متن رو عوض کردیم شما میتونی پوزیشن بدی بهش (چپ راست بالا پایین)
public MainPage()
{
InitializeComponent();
UpButton.Click += new RoutedEventHandler( UpButton_Click );
DownButton.Click += new RoutedEventHandler( DownButton_Click );
}


void DownButton_Click( object sender, RoutedEventArgs e )
{
tcc.Transition = "DownTransition";
Random random = new Random();
tcc.Content = random.NextDouble().ToString();
}


void UpButton_Click( object sender, RoutedEventArgs e )
{
tcc.Transition = "UpTransition";
Random random = new Random();
tcc.Content = random.NextDouble().ToString();
}


اینجا هم یه مثال هس که نحوه استفاده از ترنزیشن رو نشون میده
http://blogs.msdn.com/b/eternalcoding/archive/2012/07/03/tips-and-tricks-for-c-metro-developers-the-flyout-control.aspx

سیدسبحان
دوشنبه 30 شهریور 1394, 06:19 صبح
به عنوان مثال این xaml برنامه باشه
<layout:TransitioningContentControl x:Name="tcc"
HorizontalAlignment="Center"
Margin="30"
FontSize="18"
Content="Click buttons to change content" />


<Button x:Name="UpButton"
Content="Up"
Width="100"
Height="30"
Margin="10"
FontSize="14"/>
<Button x:Name="DownButton"
Content="Down"
Width="100"
Height="30"
Margin="10"
FontSize="14"/>


حالا اینجا ما متن رو عوض کردیم شما میتونی پوزیشن بدی بهش (چپ راست بالا پایین)
public MainPage()
{
InitializeComponent();
UpButton.Click += new RoutedEventHandler( UpButton_Click );
DownButton.Click += new RoutedEventHandler( DownButton_Click );
}


void DownButton_Click( object sender, RoutedEventArgs e )
{
tcc.Transition = "DownTransition";
Random random = new Random();
tcc.Content = random.NextDouble().ToString();
}


void UpButton_Click( object sender, RoutedEventArgs e )
{
tcc.Transition = "UpTransition";
Random random = new Random();
tcc.Content = random.NextDouble().ToString();
}


اینجا هم یه مثال هس که نحوه استفاده از ترنزیشن رو نشون میده
http://blogs.msdn.com/b/eternalcoding/archive/2012/07/03/tips-and-tricks-for-c-metro-developers-the-flyout-control.aspx




ببین من میخام وقتی طرف یه سطر رو انتخاب کرد از توی دیتاگرید، بعد وقتی روی دکمه ویرایش کلیک کرد، همه صفحه با انیمیشن بره و یه عالمه تکست باکس دیگه با انیمیشن بیاد جاش.
دوباره وقتی طرف دکمه بازگشت رو زد، این تکست باکس ها برن و دوباره اون دیتا گرید و دکمه برگردن.

حالا چطوری انیمیشن روی دکمه ها اعمال کنم؟!

نمیتونی این مثالی که خودم گفتم رو برام توضیح بدی؟

یعنی وقتی میزنی روی یک دکمه، یه دکمه دیگه با انیمیشن غیب شه!


آخه این مثالی که زدی انیمیشن روی layout:TransitioningContentControl اعمال میشه.
یعنی باید دکمه ای که میخام انیمیشن رووش انجام بشه، فرزند این کنترل قرار بدم؟
فرزندشم اگه قرار بدم که نمیتونم دوباره ظاهرش کنم که!

cmsdqq2
چهارشنبه 13 آبان 1394, 00:07 صبح
دوستان بنده هم به شدت نیازمند همین مورد هستم، کسی نیست؟

سیدسبحان
چهارشنبه 13 آبان 1394, 15:38 عصر
من خودم بلدم.
سوالی داری بپرس

cmsdqq2
جمعه 15 آبان 1394, 12:27 عصر
یک MainWindow داریم. فرم Login رو در همون MainWindow میسازیم. حالا یوزر کنترل X که بعد از فرم لاگین باید بیاد رو هم درج میکنیم. تا اینجا مشکلی نیست، اما میخوایم وقتی در یوزر کنترل X، بر روی مثلا دکمه تنظیمات کلیک میکنیم، با افکت خاصی بخش تنظیمات باز بشه (در همون MainWindow) بعد هم وقتی روی دکمه بازگشت کلیک میکنیم، با افکتی بخش تنظیمات بسته بشه و همون یوزر کنترل نشون داده بشه.

مثال شفافش: تلگرام دستکتاپ! وقتی روی تنظیمات کلیک کنید با افکت خاصی به بخش تنظیمات میرید (البته تلگرام با QT و C++ نوشته شده اما بنده برای WPF میخوام)

سیدسبحان
جمعه 15 آبان 1394, 16:04 عصر
یک MainWindow داریم. فرم Login رو در همون MainWindow میسازیم. حالا یوزر کنترل X که بعد از فرم لاگین باید بیاد رو هم درج میکنیم. تا اینجا مشکلی نیست، اما میخوایم وقتی در یوزر کنترل X، بر روی مثلا دکمه تنظیمات کلیک میکنیم، با افکت خاصی بخش تنظیمات باز بشه (در همون MainWindow) بعد هم وقتی روی دکمه بازگشت کلیک میکنیم، با افکتی بخش تنظیمات بسته بشه و همون یوزر کنترل نشون داده بشه.

مثال شفافش: تلگرام دستکتاپ! وقتی روی تنظیمات کلیک کنید با افکت خاصی به بخش تنظیمات میرید (البته تلگرام با QT و C++‎‎‎‎ نوشته شده اما بنده برای WPF میخوام)

این کامپوننت زیاد هم انعطاف پذیر نیست.
مثلا شما باید برای تنظیمات ، معمولا با layout استفاده میکنن:

http://mahapps.com/controls/flyouts.html

برای این تکنولوژی بهتره که با mvvm هم آشنا باشیم تا بهتر بتونیم کار کنیم باهاش و درکش کنیم.

cmsdqq2
جمعه 15 آبان 1394, 23:29 عصر
ممنون از اینکه وقت گذاشتید. بنده به علت اینکه حجم اطلاعات زیاد هست از Flyouts استفاده نکردم و بر اساس Visibility.Hidden نوشتم و موردی هم ندارم، الان فقط یک مشکل هست.





usercontrol1 us1 = new usercontrol1();
transitioningLeftR.Content = us1;
GDMain.Visibility = Visibility.Hidden;



این کد میگه: یوزر کنترل 1 رو با افکت فلان باز کن و گریدی به نام GDMain رو ببیند. خب تا اینجا که موردی نیست، اما سوال اینجاست که فرضاً ما وارد فرم یوزرکنترل 1 شدیم، حالا برای بازگشت چه کار کنیم؟ (یعنی یوزر کنترل 1 بسته بشه و با افکتی گریدی به نام GDMain باز بشه). موردی که باید بگم این هست که همه اینها در MainWindow هستند.

سیدسبحان
شنبه 16 آبان 1394, 17:42 عصر
ممنون از اینکه وقت گذاشتید. بنده به علت اینکه حجم اطلاعات زیاد هست از Flyouts استفاده نکردم و بر اساس Visibility.Hidden نوشتم و موردی هم ندارم، الان فقط یک مشکل هست.





usercontrol1 us1 = new usercontrol1();
transitioningLeftR.Content = us1;
GDMain.Visibility = Visibility.Hidden;



این کد میگه: یوزر کنترل 1 رو با افکت فلان باز کن و گریدی به نام GDMain رو ببیند. خب تا اینجا که موردی نیست، اما سوال اینجاست که فرضاً ما وارد فرم یوزرکنترل 1 شدیم، حالا برای بازگشت چه کار کنیم؟ (یعنی یوزر کنترل 1 بسته بشه و با افکتی گریدی به نام GDMain باز بشه). موردی که باید بگم این هست که همه اینها در MainWindow هستند.

اره مدوجه منظورتون هستم.
این مشکل منم بود. که فکر نکنم بشه حلش کرد. بنظرم همچین قابلیتی نداشته باشه.
خب اشکالی نداره که!!
خودتون با blend یه افکت بسازید که وقتی روی فلان دکمه کلیک شد، فلان کنترل ها با افکتی که میخاید، نمایش داده بشه.

cmsdqq2
شنبه 16 آبان 1394, 22:02 عصر
آخه مورد اینجاست که من تا حالا با blend کار نکردم...

cmsdqq2
شنبه 16 آبان 1394, 22:20 عصر
مورد دیگه ای که هست برای همین کامپونت، اگر بخوایم دکمه ها گرد بشن که موردی نیست، یک استایل درج میکنیم، اما اگر بخوایم آیکون در دکمه گرد شده قرار بدیم، باید علاوه بر کدها XAML (کدهای براش و ...) از یک ارجاع دهنده ریسورس هم استفاده کنیم.



<Rectangle>
<Rectangle.Fill>
<VisualBrush Visual="{StaticResource appbar_add}" />
</Rectangle.Fill>


این هم ریسورس:



<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Resources/Icons.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

مشکلی که هست، برای من فایل ریسورس رو پیدا نمیکنه، در صورتی که همه چیز درسته. طبق این آدرس http://mahapps.com/guides/icons-and-resources.html پیش رفتم، فایل Mahapp.Resources رو هم نصب کردم، فایلی به نام icon.xaml هم ساخته شده اما در برنامه شناخته نمیشه.