Re[7]: помогите с привязками
От: 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ൒  
Дата: 14.03.23 16:11
Оценка: 3 (1) +1
Я просил, то на что ссылается {StaticResource CellTemplate}.
где RelativeSource использется к контексте привязки данных? я вижу только в командах и контекстном меню.

Свойство RawOn не найдено для объекта типа TDateTimeControl. — это скорее всего означет что binding source — сам TDateTimeControl, двойное внимание на использование RelativeSource={RelativeSource Self}

постарайтесь привязываться к данным а не к UI элементам.
Re: помогите с привязками
От: 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ൒  
Дата: 13.03.23 16:47
Оценка: 3 (1)
можно попробовать:

<localR:TDateTimeControl DataContext={Binding} Value="{Binding RawOn}" Content="{StaticResource CellTemplate}"/>

Ошибка с RelativeBinding откуда из CellTemplate оли откуда то еще?

Универсальный совет — упрощайте свой контрол до тех пор, пока не начнет работать и добавляйте постепенно функционал после. тумчач-тусун ат иц бест.
Re[5]: помогите с привязками
От: 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ൒  
Дата: 14.03.23 10:22
Оценка: 3 (1)
я не про тип а про источник aka source, где сидит значение — это VM, родительский контрол или что то еще + покажите CellTemplate, странно по крайней мере на уровне названия что дочерний контрол localR:TDateTimeControl имеет темплейт с таким именем.
Re[9]: помогите с привязками
От: 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ൒  
Дата: 15.03.23 11:27
Оценка: 3 (1)
самое простое соберите простенький проект с офлайн данными и опубликуйте на фитхабе — я посмотрю. на вид все слишком сложно огранизовано, зачем вам свои кастом контролы — вы же не телерик какой то верно? гораздо проще сделать темплейт (не контрол а дата темплейт), расшерить его через статик ресурс и юзать где надо. От код бихайнд в 99% случаев надо озбавляться. применяйте MVVM ставьте datacontext корневому вью и дайте работать байдингам.
помогите с привязками
От: VjcheslavV  
Дата: 13.03.23 13:42
Оценка:
Хочу вставить свой контрол(TDateTimeControl) в ListView но не получается привязать данные к нему , а остальные ячейки привязываются и отображаются
а моему контролу не передаётся дата.

<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Width="120">
<GridViewColumnHeader x:Name="On" Tag="Down" Content="Дата и время" />

<GridViewColumn.CellTemplate>
<DataTemplate>
<localR:TDateTimeControl Value="{Binding RawOn}" Content="{StaticResource CellTemplate}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="50">
<GridViewColumnHeader x:Name="CountTP" Content="ТП" />
<GridViewColumn.CellTemplate>
<DataTemplate>
<ContentPresenter HorizontalAlignment="Right" ContentSource="{Binding CountTP}"
Content="{StaticResource CellTemplate}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>

TDateTimeControl — мой контрол.

пишет 2 ошибки:
Не удается найти источник: RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ContentPresenter', AncestorLevel='1'.
Свойство RawOn не найдено для объекта типа TDateTimeControl.

Может подскажите в чём косяк или пример подскажете?
Re[2]: помогите с привязками
От: VjcheslavV  
Дата: 14.03.23 07:05
Оценка:
Здравствуйте, 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ൒, Вы писали:

尿Ǥ푙>можно попробовать:


尿Ǥ푙><localR:TDateTimeControl DataContext={Binding} Value="{Binding RawOn}" Content="{StaticResource CellTemplate}"/>

не помогло даже в редакторе синим подчёркивает
尿Ǥ푙>Ошибка с RelativeBinding откуда из CellTemplate оли откуда то еще?
да из-за него
尿Ǥ푙>Универсальный совет — упрощайте свой контрол до тех пор, пока не начнет работать и добавляйте постепенно функционал после. тумчач-тусун ат иц бест.
Re[3]: помогите с привязками
От: 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ൒  
Дата: 14.03.23 09:12
Оценка:
редактор — не показатель. RawOn свойство чего?
Re[4]: помогите с привязками
От: VjcheslavV  
Дата: 14.03.23 10:13
Оценка:
Здравствуйте, 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ൒, Вы писали:

尿Ǥ푙>редактор — не показатель. RawOn свойство чего?

RawOn это DateTime хочу чтобы он в localR:TDateTimeControl в свойство Value подставлялся причем для каждой строки свой
(в ItemsSource я свой лист забросил и остальные паля там появляются)
Re[6]: помогите с привязками
От: VjcheslavV  
Дата: 14.03.23 13:58
Оценка:
Здравствуйте, 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ൒, Вы писали:

尿Ǥ푙>я не про тип а про источник aka source, где сидит значение — это VM, родительский контрол или что то еще + покажите CellTemplate, странно по крайней мере на уровне названия что дочерний контрол localR:TDateTimeControl имеет темплейт с таким именем.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace IS_Outages.Out6
{
/// <summary>
/// Логика взаимодействия для ManuallyControl.xaml
/// </summary>
public partial class ManuallyControl : UserControl
{
public class ManuallyData
{
public DateTime On { get; set; }
public int CountTP { get; set; }
public int Count1 { get; set; }
public int Count2 { get; set; }
public int Count3 { get; set; }
public int Count4 { get; set; }
public int CountNP { get; set; }
public int CountBOIL { get; set; }
public int CountZS { get; set; }
public int CountBRD { get; set; }
public int CountFM { get; set; }
public int CountANML { get; set; }
public int Count1CAT { get; set; }
public int CountMED { get; set; }
public int CountNURS { get; set; }
public int CountSCHOOL { get; set; }
public int CountIND { get; set; }
public int CountLEG { get; set; }

public ManuallyData()
{
On = DateTime.Now;
}
}
public IList<TOut6ViewDetailsItem> ManuallyStage { get { return _manuallyStage; } set { _manuallyStage = value; } }
public IList<TOut6ViewDetailsItem> _manuallyStage = new List<TOut6ViewDetailsItem>() {new TOut6ViewDetailsItem()};
public ManuallyControl()
{
InitializeComponent();
}

private void ListView5SelectionChanged(object sender, SelectionChangedEventArgs e) => e.Handled = true;
public bool IsPresentNow(DateTimeOffset dateTime) {
foreach (TOut6ViewDetailsItem el in _manuallyStage) {
//if ((dateTime.Subtract(el.RawOn).TotalMinutes <= 1.0) && dateTime.Minute == el.On.Minute)
// return true;
}
return false;
}
public bool AddElement(TOut6ViewDetailsItem el) {
if (IsPresentNow(el.RawOn))
return false;
ManuallyStage.Add(el);
ListView5.ItemsSource = null;
ListView5.ItemsSource = ManuallyStage;
return true;
}

private void UserControl_Unloaded(object sender, RoutedEventArgs e)
{

}
}
}

<UserControl x:Class="IS_Outages.Out6.ManuallyControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:IS_Outages.Out6"
xmlns:localR="clr-namespace:IS_Outages"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800"
Unloaded="UserControl_Unloaded"
>
<Grid x:Name="Grid3" Grid.ColumnSpan="3" Grid.Row="1" Visibility="Visible" Margin="8">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" MinHeight="300" />
<RowDefinition />
</Grid.RowDefinitions>
<ListView x:Name="ListView5" SelectionChanged="ListView5SelectionChanged" ItemsSource="{Binding}" >
<ListView.ContextMenu>
<ContextMenu>
<MenuItem Command="localR:TCommands.Copy" CommandParameter="{x:Reference ListView5}" />
<MenuItem Command="localR:TCommands.CopyAll" CommandParameter="{x:Reference ListView5}"
CommandTarget="{Binding PlacementTarget, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContextMenu}}}" />
<MenuItem Command="localR:TCommands.SelectAll" CommandParameter="{x:Reference ListView5}" />
<MenuItem Command="localR:TCommands.SelectRemove" CommandParameter="{x:Reference ListView5}" />
</ContextMenu>
</ListView.ContextMenu>
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Width="120">
<GridViewColumnHeader x:Name="On" Tag="Down" Content="Дата и время" />

<GridViewColumn.CellTemplate>
<DataTemplate>
<localR:TDateTimeControl Value="{Binding RawOn}" Content="{StaticResource CellTemplate}"/>
<!--<ContentPresenter ContentSource="{Binding On}" Content="{StaticResource CellTemplate}" />-->
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="50">
<GridViewColumnHeader x:Name="CountTP" Content="ТП" />
<GridViewColumn.CellTemplate>
<DataTemplate>
<ContentPresenter HorizontalAlignment="Right" ContentSource="{Binding CountTP}"
Content="{StaticResource CellTemplate}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="50">
<GridViewColumnHeader x:Name="Count1" Content="НП до 50" />
<GridViewColumn.CellTemplate>
<DataTemplate>
<ContentPresenter HorizontalAlignment="Right" ContentSource="{Binding Count1}"
Content="{StaticResource CellTemplate}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="50">
<GridViewColumnHeader x:Name="Count2" Content="НП 50..199" />
<GridViewColumn.CellTemplate>
<DataTemplate>
<ContentPresenter HorizontalAlignment="Right" ContentSource="{Binding Count2}"
Content="{StaticResource CellTemplate}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="50">
<GridViewColumnHeader x:Name="Count3" Content="НП 200..999" />
<GridViewColumn.CellTemplate>
<DataTemplate>
<ContentPresenter HorizontalAlignment="Right" ContentSource="{Binding Count3}"
Content="{StaticResource CellTemplate}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="50">
<GridViewColumnHeader x:Name="Count4" Content="НП от 1000" />
<GridViewColumn.CellTemplate>
<DataTemplate>
<ContentPresenter HorizontalAlignment="Right" ContentSource="{Binding Count4}"
Content="{StaticResource CellTemplate}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="50">
<GridViewColumnHeader x:Name="CountNP" Content="НП всего" />
<GridViewColumn.CellTemplate>
<DataTemplate>
<ContentPresenter HorizontalAlignment="Right" ContentSource="{Binding CountNP}"
Content="{StaticResource CellTemplate}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="50">
<GridViewColumnHeader x:Name="CountBOIL" Content="Котельных" />
<GridViewColumn.CellTemplate>
<DataTemplate>
<ContentPresenter HorizontalAlignment="Right" ContentSource="{Binding CountBOIL}"
Content="{StaticResource CellTemplate}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="50">
<GridViewColumnHeader x:Name="CountZS" Content="Зерносушилок" />
<GridViewColumn.CellTemplate>
<DataTemplate>
<ContentPresenter HorizontalAlignment="Right" ContentSource="{Binding CountZS}"
Content="{StaticResource CellTemplate}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="50">
<GridViewColumnHeader x:Name="CountBRD" Content="Птицефабрик" />
<GridViewColumn.CellTemplate>
<DataTemplate>
<ContentPresenter HorizontalAlignment="Right" ContentSource="{Binding CountBRD}"
Content="{StaticResource CellTemplate}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="50">
<GridViewColumnHeader x:Name="CountFM" Content="Ферм" />
<GridViewColumn.CellTemplate>
<DataTemplate>
<ContentPresenter HorizontalAlignment="Right" ContentSource="{Binding CountFM}"
Content="{StaticResource CellTemplate}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="50">
<GridViewColumnHeader x:Name="CountANML" Content="Животноводческих комплексов" />
<GridViewColumn.CellTemplate>
<DataTemplate>
<ContentPresenter HorizontalAlignment="Right" ContentSource="{Binding CountANML}"
Content="{StaticResource CellTemplate}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="50">
<GridViewColumnHeader x:Name="Count1CAT" Content="Объектов 1 категории" />
<GridViewColumn.CellTemplate>
<DataTemplate>
<ContentPresenter HorizontalAlignment="Right" ContentSource="{Binding Count1CAT}"
Content="{StaticResource CellTemplate}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="50">
<GridViewColumnHeader x:Name="CountMED" Content="Медицинских учреждений" />
<GridViewColumn.CellTemplate>
<DataTemplate>
<ContentPresenter HorizontalAlignment="Right" ContentSource="{Binding CountMED}"
Content="{StaticResource CellTemplate}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="50">
<GridViewColumnHeader x:Name="CountNURS" Content="Детских садов" />
<GridViewColumn.CellTemplate>
<DataTemplate>
<ContentPresenter HorizontalAlignment="Right" ContentSource="{Binding CountNURS}"
Content="{StaticResource CellTemplate}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="50">
<GridViewColumnHeader x:Name="CountSCHOOL" Content="Школ" />
<GridViewColumn.CellTemplate>
<DataTemplate>
<ContentPresenter HorizontalAlignment="Right" ContentSource="{Binding CountSCHOOL}"
Content="{StaticResource CellTemplate}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="50">
<GridViewColumnHeader x:Name="CountIND" Content="Физических лиц" />
<GridViewColumn.CellTemplate>
<DataTemplate>
<ContentPresenter HorizontalAlignment="Right" ContentSource="{Binding CountIND}"
Content="{StaticResource CellTemplate}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="50">
<GridViewColumnHeader x:Name="CountLEG" Content="Юридических лиц" />
<GridViewColumn.CellTemplate>
<DataTemplate>
<ContentPresenter HorizontalAlignment="Right" ContentSource="{Binding CountLEG}"
Content="{StaticResource CellTemplate}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
<StackPanel Grid.Row="1" Margin="0,8,0,0" Orientation="Horizontal">
<Button Command="localR:TCommands.AddStage"
Content="{Binding Command.Text, RelativeSource={RelativeSource Self}}" />
<Button Margin="8,0,0,0" Command="localR:TCommands.DeleteStage"
Content="{Binding Command.Text, RelativeSource={RelativeSource Self}}" />
</StackPanel>
</Grid>
</UserControl>

Re[8]: помогите с привязками
От: VjcheslavV  
Дата: 15.03.23 11:19
Оценка:
Здравствуйте, 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ൒, Вы писали:

尿Ǥ푙>постарайтесь привязываться к данным а не к UI элементам.


действительно косяк... Посадил свой контрол на форму и привязал вручную ( в функции TabControl_SelectionChanged() там же и создание manuallyControl и присваевание родителя )
manuallyControl.td1.SetBinding(TDateTimeControl.ValueProperty, new Binding()
{
Mode = BindingMode.Default,
Source = manuallyControl,
Path = new PropertyPath("dateTime1"),
});

после выполнения привязки данные появляются в свойстве Value но после выхода из функции привязка пропадает вместе со значением

в чём косяк?

раньше похожее встречал в томже проекте — при смене родительского контрола автоматом менялся DataContext и привязка обнулялась...

а что в этот раз?
Re[10]: помогите с привязками
От: VjcheslavV  
Дата: 21.03.23 13:47
Оценка:
Здравствуйте, 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ൒, Вы писали:

尿Ǥ푙>самое простое соберите простенький проект с офлайн данными и опубликуйте на фитхабе — я посмотрю. на вид все слишком сложно огранизовано, зачем вам свои кастом контролы — вы же не телерик какой то верно? гораздо проще сделать темплейт (не контрол а дата темплейт), расшерить его через статик ресурс и юзать где надо. От код бихайнд в 99% случаев надо озбавляться. применяйте MVVM ставьте datacontext корневому вью и дайте работать байдингам.


Сделал проэкт попроще ... помогло ... оказывается в RelativeSource={RelativeSource Self} было дело — он в контроле был и мешал привязке...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.