reklama

Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Témata - zemla

Stran: [1]
1
Ahoj,

potřeboval bych prosím docela pomoct, protože už jsem vyčerpal všechny své pokusy/omyly, co mě napadly.

Kvůli animaci jsem si odvodil z TextBlocku vlastní CustomTextBlock, není na něm nic moc zvláštního, ale vypadá takhle:

Kód: [Vybrat]
    public class CustomTextBlock : TextBlock
    {
        public static readonly RoutedEvent ShowTextEvent =
            EventManager.RegisterRoutedEvent("ShowText", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(CustomTextBlock));

        public event RoutedEventHandler ShowText
        {
            add
            {
                this.AddHandler(ShowTextEvent, value);
            }

            remove
            {
                this.RemoveHandler(ShowTextEvent, value);
            }
        }
    }

v XAMLu mám potom:

Kód: [Vybrat]
        <local:CustomTextBlock x:Name="InfoTextBlock" Text="{Binding InfoTextBlockText, Mode=TwoWay}" Width="411" Height="54" FontSize="36" FontWeight="Normal" Canvas.Left="258" Canvas.Top="265">
            <local:CustomTextBlock.Foreground>
                <SolidColorBrush x:Name="InfoSolidColorBrush" Color="Transparent" />
            </local:CustomTextBlock.Foreground>
            <local:CustomTextBlock.Triggers>
                <EventTrigger RoutedEvent="local:CustomTextBlock.ShowText">
                    <BeginStoryboard>
                        <Storyboard>
                            <ColorAnimation Storyboard.TargetName="InfoSolidColorBrush" Storyboard.TargetProperty="Color" From="GreenYellow" To="Transparent" Duration="0:0:3"/>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </local:CustomTextBlock.Triggers>
        </local:CustomTextBlock>

Je tam trigger, protože tu animaci potřebují zavolat z kódu, ovšem z View na základě co mi na převolání ViewModel vrátí.

A volám to takto:

Kód: [Vybrat]
InfoTextBlock.RaiseEvent(new RoutedEventArgs(CustomTextBlock.ShowTextEvent, this));

Je mi jasné, že když přeteče zásobník, musím tam mít někde cyklickou závislost, jenže ji nevídím.

Proto jsem chtěl poprosit, jestli by se na to někdo z vás mohl podívat svýma očima, třeba je to něco triviálního.

Byl bych vám za to moc vděčný.
Díky za případnou radu.

2
Vývoj / Reflexe u Tasku v C#
« kdy: 14. 03. 2019, 19:51:34 »
Zravíčko,

mám problém. Snažím se v metodě, které předám delegát typu task, přistoupit k parametrům metody, kterou ten task reprezentuje a nevím, jak na to, ani jestli to vůbec jde. Radši ukážu kód.

Kód: [Vybrat]
public class Program
    {
        public async Task<int> ReuseNumber(int a)
        {
            return a;
        }

        public async Task<int> ChangeTaskParams(Func<Task<int>> method)
        {

            // WHAT DO I WRONG ?
            Console.WriteLine(method.Method.GetParameters().GetValue(0));

            return await method.Invoke();
        }

        public void Run()
        {
            ChangeTaskParams(async () => await ReuseNumber(1)).GetAwaiter().GetResult();
        }

        public static void Main(string[] args)
        {
            new Program().Run();

            Console.ReadLine();
        }
    }

Dokázali byste mi prosím někdo poradit?

3
Dobrý den, snažím se vytvořit JukeBox a jelikož se mi nedařilo zachytit eventu MediaEnded po dohrátí písničky, vytáhnul jsem kód do konzolové aplikace, kde se to snad bude ladit líp. Kód je:

Kód: [Vybrat]
using System;
using System.Windows.Media;

namespace MediaPlayerTest
{
    class Program
    {
        static void Main(string[] args)
        {
            new Program().Run();

            Console.ReadLine();
        }

        public void Run()
        {
            var player = new MediaPlayer();
            player.MediaEnded += MediaPlayer_MediaEnded;

            player.Open(new Uri(@"d:\Jukebox\mp3\ROTTROVA MARIE - Reka lasky (CZ 2003)\03 ROTTROVA MARIE - Reka lasky.mp3"));
            player.Play();
        }

        private void MediaPlayer_MediaEnded(object sender, EventArgs e)
        {
            var x = 1;
        }
    }
}

Píseň se přehraje až do konce, ale eventa se neraisne.

Napadá někoho z vás pls čím by to mohlo být? V eventě mám breakpoint.

Díky

Stran: [1]

reklama