• Каким способом лучше позиционировать элементы?

    yarosroman
    @yarosroman Куратор тега C#
    C# the best
    Самое простое, GridView, в ItemsPanelTemplate, задаем шаблон панели. А тут придется переписать поведение панели. Делаем новой компонент, GamePanel и переопределяем там ArrangeOverride и MeasureOverride, добавляем свойства нужные и тд.
    class GamePanel:Panel
            {
            public int ItemsPerWidth
            {
                get { return (int)GetValue(ItemWidthProperty); }
                set { SetValue(ItemWidthProperty, value); }
            }
            public static readonly DependencyProperty ItemsPerWidthProperty =
                DependencyProperty.Register(nameof(ItemsPerWidth), typeof(int), typeof(GamePanel), new PropertyMetadata(null));
    
            public int ItemsPerHeight
            {
                get { return (int)GetValue(ItemWidthProperty); }
                set { SetValue(ItemWidthProperty, value); }
            }
            public static readonly DependencyProperty ItemPerHeightProperty =
                DependencyProperty.Register(nameof(ItemsPerHeight), typeof(int), typeof(GamePanel), new PropertyMetadata(null));
    
    
            protected override Size ArrangeOverride(Size finalSize)
            {
            }
    
            protected override Size MeasureOverride(Size availableSize)
            {
            }
    
        }


    про ArrangeOverride и MeasureOverride тут

    и в Xaml
    <GridView ItemsSource="{Binding ShopItems}" ItemContainerStyle="{StaticResource ShopGridViewItemExpanded}" Loaded="GridView_Loaded">
                <GridView.ItemsPanel>
                    <ItemsPanelTemplate>
                        <controls:GamePanel ItemsPerWidth="4" ItemsPerHeight="4"></controls:VariableHeightPanel>
                    </ItemsPanelTemplate>
                </GridView.ItemsPanel>
                <GridView.ItemTemplate>
                    <DataTemplate>
                          <Border ..цвет, заливка.......>
                                  <TextBlock ......тут номер />
                         </Border>
                     </DataTemplate>
                </GridView.ItemTemplate>
            </GridView>


    вот и все. теперь во вью модели у вас будет коллекция фишек (типа
    public class GameItem
    {
        public int Id { get;set; }
        public string Text { get; set;}
        public bool IsEmpty {get; set;}
       .... ну и далее, например цвет, картинка и тд.
    }
    
    public class ViewModel
    {
       private readonly ObservableCollection<GameItem> _gameItems = new ObservableCollection<GameItem>();
    
       public ObservableCollection<GameItem> GameItems => return _gameItems;
    }


    естественно можете задать свойства для привязки ItemsPerHeight и ItemsPerWidth.
    все просто? новая игра? очищаем коллекцию, заполняем новыми фишками (не забываем про пустую), проверить на конец игры, проходим по списку и смотрим по порядку ли элементы.
    Ответ написан
    8 комментариев
  • Трансляция аудиопотока с ПК на смартфон?

    lVlOzART
    @lVlOzART
    Т.е. комп в одной комнате, а Вы с монитором и телефоном в другой, и вы хотите управлять звуком на компе->HDMI->телевизоре с помощью телефона? Если так то либо чините вай фай на мобилке, либо ходите с длиннющим АУКСом по комнате, либо купите телефон с вайфаем (сейчас на 4.4 андроиде со всеми плюшками, удовлетворяющими Вашим требованиям, можно взять за 3-4 тыс) и в зависимости от операционки если хотите управлять аудиотекой на Винде то Foobar с Remote plugin`ом либо если nix`овые - Clementine - очень удобная вещь, сможете управлять и скачивать плейлисты и музыку с компа нажатием одной кнопки. BlueTooth мне кажется плохой вариант.
    Ответ написан
    7 комментариев
  • Из-за чего пропадают стили в WPF?

    @i_light
    Backend, XAML, crossplatform
    После того, как переопределён ItemTemplate или ItemContainerStyle, старые стили соответственно полностью перезаписываются. Неуказанные значения - перезаписываются значениями по умолчанию.

    Объявление из примера кода равнозначно коду:
    var view = new ListView();
    view.ItemTemplate = new DataTemplate();
    view.ItemContainerStyle = new Style() { ... };


    Если нужно что-то изменить в стиле в ресурсе, надо его редактировать именно в том месте, где он определён. Если же нужно иметь оба стиля, Expression Blend умеет делать копии (правый клик по контролу - Edit Template - Edit a copy). Ну, или просто скопировать и дать другой ключ ресурса.
    Ответ написан
    1 комментарий
  • Подойдет ли обычная веб-камера для уличной съемки?

    @nazarkemerov
    Для уличной съемки больше всего подойдет IP камера от Зенит, а если точнее, то модель Zenith E5, которая имеет много преимуществ в сравнении с другими камерами: www.techport.ru/katalog/products/kompjuternaja-teh... Запись видео как днем, так и ночью без помех и искажений, также есть возможность подключения к сети и много других функций.
    Ответ написан
    1 комментарий